Показать полную графическую версию : Запрос исполняется очень долго, а вроде бы не должен
Добрый всем день!
Посылаю в 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 строк.
Почему первый запрос исполняется так долго? В чем может быть проблема?
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC