Ashotovich
Новичок
LEFT JOIN или два запроса - что быстрее?
Всем привет.
У меня есть две таблицы: одна - справочник, в котором находятся все типы мероприятий (называется, допустим, at):
Другая таблица - список проделанных мероприятий (назовем ее ad):
В сводной таблице необходимо вывести список всех типов мероприятий с количеством проделанных по каждому типу:
Соответственно, наиболее легко это реализуется при помощи одного запроса, использующего LEFT JOIN:
Более сложно и, на первый взгляд, "криво" это можно сделать двумя запросами: сначала получаем список типов мероприятий из первой таблицы (at_id, at_name), запихиваем его в двухмерный массив, затем - делаем выборку типов и количеств из второй таблицы и присоединяем результат к уже имеющемуся массиву - в результате выходят те же данные, что и при запросе с применением JOIN.
А вопрос вот в чем: если вторая таблица на миллион-другой записей, не сильно ли будет тормозить JOIN? При малых размерах таблиц все понятно - JOIN и быстрее, и проще. А вот при больших таблицах - будет ли он быстрее?
Заранее спасибо за помощь.
Всем привет.
У меня есть две таблицы: одна - справочник, в котором находятся все типы мероприятий (называется, допустим, at):
Код:
at_id | at_name
---------------------
1 | Aaaaa
2 | Bbbbb
3 | Cccccc
4 | Ddddd
Код:
ad_id | at_id | ad_date
--------------------------
1 | 2 | 2004-01-08
2 | 2 | 2004-01-08
3 | 1 | 2004-01-08
4 | 1 | 2004-01-09
Код:
at_id | qty
---------------------
1 | 2
2 | 2
3 | 0
4 | 0
PHP:
SELECT at.at_id, count(ad.at_id) AS qty FROM at LEFT JOIN ad ON ad.at_id=at.at_id GROUP BY at.at_name
А вопрос вот в чем: если вторая таблица на миллион-другой записей, не сильно ли будет тормозить JOIN? При малых размерах таблиц все понятно - JOIN и быстрее, и проще. А вот при больших таблицах - будет ли он быстрее?
Заранее спасибо за помощь.