Несколько простых объединений Vs. Несколько простых выборов - PullRequest
0 голосов
/ 04 марта 2011

У меня есть таблица meta, которая выглядит следующим образом

ID     post_id     meta_key      meta_value
1      1           key_01        val
2      1           key_02        val
3      1           key_03        val

, и я хочу получить все 3 ключа и значения.Это медленнее использовать JOIN, чем SELECT?JOIN сделает это намного проще, например:

SELECT M1.meta_value AS key_01, M2.meta_value AS key_02, M3.meta_value AS key_04 
FROM `meta` AS M1 
     JOIN `meta` M2 ON M2.post_id = 1 AND M2.meta_key = 'key_02' 
     JOIN `meta M3 ON M3.post_id = 1 AND M3.meta_key = 'key_03' 
WHERE M1.meta_key = 'key_01'

Я этого не проверял, но вы должны понять.

Ответы [ 2 ]

1 голос
/ 04 марта 2011

Я считаю, что JOINS более эффективны, чем использование вложенных SELECTS. Также индексирование столбцов внешнего ключа (соединенных столбцов) также улучшит производительность. Так что поп индекс на post_id и meta_key. Индексы могут ухудшить производительность INSERT, поэтому примите это во внимание.

1 голос
/ 04 марта 2011

Я думаю, что движок mysql имеет больше шансов создать хороший план запросов при использовании объединений, чем при выполнении подвыборов и / или объединений.

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