Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Запрос исполняется очень долго, а вроде бы не должен (http://forum.oszone.net/showthread.php?t=206339)

evg64 06-05-2011 22:36 1671547

Запрос исполняется очень долго, а вроде бы не должен
 
Добрый всем день!
Посылаю в 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 1671576

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

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

palladin_jedi 21-05-2011 22:12 1680308

Цитата:

Цитата evg64
не возвращает результатов. »

Может проблема в этом?

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

Hangsman 18-07-2011 21:29 1715200

Цитата:

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

Можно

Цитата:

Цитата evg64
Посылаю в 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)
Это даст возможность проанализировать запрос и понять более детально, где собака зарыта


Время: 10:44.

Время: 10:44.
© OSzone.net 2001-