Соединение с таблицей тегов - мне нужно присоединиться в PHP или на сервере БД? - PullRequest
3 голосов
/ 29 января 2011

Используя решение Toxi , как мне выбрать теги для определенной "Закладки" (чтобы сохранить тему Delicious):

Я могу либо:

1) Присоединиться к одному запросу:


select bookmark.title, bookmark.url, 
(
  SELECT group_concat( tags.name ) as tagNames
  FROM taggings INNER JOIN tags
  ON taggings.tagId_fk=tags.tagId
  WHERE taggings.bookmarkId_fk = bookmarks.bookmarkId_fk
)
from bookmarks
where bookmarks.id=1 ;

^^ That gives
title    url               tagNames
A bkmrk  http://url.com    tag1,tag2,tag3

2) Используйте два запроса : один для получения идентификаторов закладок для отображения, а другой для получения тегов для этих закладок. Затем результаты можно объединить в PHP.

Так что на самом деле этот вопрос таков: в общем эффективность / нагрузка на базу данных лучше ли делать больше объединений в одном запросе или нескольких запросах?

Как вы принимаете такое решение? Или вы просто не думаете об этом, пока загрузка не вызовет проблемы?

1 Ответ

1 голос
/ 29 января 2011

Серверная сторона более эффективна.

В обоих случаях сервер должен прочитать все теги.

Если вы приведете их в PHP, то все они должны путешествовать по проводам, и PHP должен возиться с ними.

Если вы делаете их на сервере, готовый ответ (меньший) приходит по проводам, готовым для PHP, чтобы передать его в пользовательский интерфейс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...