PDA

Показать полную графическую версию : Запрос исполняется очень долго, а вроде бы не должен


evg64
06-05-2011, 22:36
Добрый всем день!
Посылаю в MySQL запрос:
Select id from CnPODWords where ID in (Select ID from CnPODWords group by word having count(word)>15)
Он почему-то исполняется очень долго (я даже не смог дождаться в течение 5 минут). Причем код:
Select ID from CnPODWords group by word having count(word)>15
по отдельности исполняется моментально и не возвращает результатов.

В таблице CnPODWords около 13000 строк.

Почему первый запрос исполняется так долго? В чем может быть проблема?

Sham
06-05-2011, 23:06
1. вроде бы нельзя одну таблицу юзать в запросе и подзапросе
http://dev.mysql.com/doc/refman/5.5/en/subqueries.html

2. подзапросы в IN плохо оптимизируются
http://dev.mysql.com/doc/refman/5.5/en/subquery-restrictions.html

palladin_jedi
21-05-2011, 22:12
не возвращает результатов. »
Может проблема в этом?

ИМХО, лучше получить первым запросом массив, а потом через цикл foreach() или mysql_fetch_array обработать значения.

Hangsman
18-07-2011, 21:29
1. вроде бы нельзя одну таблицу юзать в запросе и подзапросе
http://dev.mysql.com/doc/refman/5.5/en/subqueries.html »
Можно

Посылаю в MySQL запрос:
Код:
Select id from CnPODWords where ID in (Select ID from CnPODWords group by word having count(word)>15)
Он почему-то исполняется очень долго (я даже не смог дождаться в течение 5 минут). Причем код:
Код:
Select ID from CnPODWords group by word having count(word)>15 »

Слей результат запроса Select ID from CnPODWords group by word having count(word)>15 во временную таблицу и будет счастье.

Долго выполняетса - воспользуйся командой EXPLAIN

EXPLAIN Select id from CnPODWords where ID in (Select ID from CnPODWords group by word having count(word)>15)
Это даст возможность проанализировать запрос и понять более детально, где собака зарыта




© OSzone.net 2001-2012