Forum Webscript.Ru

Общие => Базы данных => Тема начата: Alexandr от 13 Июня 2002, 10:28:44

Название: Что быстрее...
Отправлено: Alexandr от 13 Июня 2002, 10:28:44
Что быстрее:
SELECT count(id) as id FROM firm WHERE firm_type=1;
SELECT count(id) as id FROM firm WHERE firm_type=2;
SELECT count(id) as id FROM firm WHERE firm_type=3;
Или
SELECT firm_type, count(*) as w FROM firm GROUP BY firm_type
если
firm_type индекс
Название: Что быстрее...
Отправлено: sonarv от 02 Июля 2002, 16:21:23
По моему разумению второй вариант должен быть быстрее...
Тк селекту не надо генерить 3!!!! различные таблицы.
Но тут есть подводный камень.....сколько времени уйдет на сортировку одной большой таблицы. Я думаю что это вообще врядли кто знает. Для этого надо знать по какому методу GROUP BY сортирует....Так что смотри сам опытным путем.
Название: Что быстрее...
Отправлено: AlieN от 02 Июля 2002, 17:25:18
ИМХО Второй запрос будет быстрее
Название: Что быстрее...
Отправлено: ThE0ReTiC от 02 Июля 2002, 17:46:58
Второй конечно.
Название: Что быстрее...
Отправлено: Alexandr от 03 Июля 2002, 16:51:34
Однако смотрим EXPLAIN.......
table type possible_keys key key_len ref rows Extra
1) firm ref firm_type firm_type 1 const 69 where used; Using index
2) firm ref firm_type firm_type 1 const 42 where used; Using index
3) firm ref firm_type firm_type 1 const 12 where used; Using index
ИЛИ
4) firm index  firm_type 1  124 Using index

Следовательно, первые 3 запроса просматривают на 1 строку меньше, чем 4-й
Название: Что быстрее...
Отправлено: ThE0ReTiC от 03 Июля 2002, 17:03:07
Alexandr
Угу. А обработка запросов скриптом?