Страницы

понедельник, 1 июня 2009 г.

Осторожно mysql!!!

Вот иногда бывает!!!Это сообщение типа заметки об mysql, чтоб всегда помнил и не забывал.Итак есть две таблицы

desc search_words;
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| sw_id | int(11) | NO | PRI | NULL | auto_increment |
| sw_word | varchar(255) | YES | MUL | NULL | |
+---------+--------------+------+-----+---------+----------------+

и

desc search_words_articles_count;
+-----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| swac_swid | int(11) | YES | | NULL | |
| swac_aid | int(11) | YES | | NULL | |


вроде все ясно swac_swid это sw_id, sw_word текстовое значение слова
далее вроде бы безобидный запрос - требуется найти количество вхождений конкретных слов в ресурсах ,которые указаны в search_words_articles_count :

SELECT swac_swid,count(*) FROM search_words_articles_count WHERE swac_swid IN (SELECT sw_id FROM search_words WHERE sw_word IN ('из','нам','столь','до')) GROUP BY swac_swid;

в таблицах search_words_articles_count,search_words примерно 22 млн и 66 тыс записей соответсвенно .
Результата предыдущего запроса я не дождался!!!!
За то :
mysql> SELECT * FROM search_words WHERE sw_word IN ('из','нам','столь','до');
+-------+------------+
| sw_id | sw_word |
+-------+------------+
| 2869 | столь |
| 1569 | до |
| 2671 | из |
| 2059 | нам |
+-------+------------+
4 rows in set (0.07 sec)
а потом запустив запрос :
mysql> SELECT swac_swid,count(*) FROM search_words_articles_count WHERE swac_swid IN (2869,1569,2671,2059) GROUP BY swac_swid;
+-----------+----------+
| swac_swid | count(*) |
+-----------+----------+
| 1569 | 27833 |
| 2059 | 16504 |
| 2671 | 73176 |
| 2869 | 7733 |
+-----------+----------+
4 rows in set (6.42 sec)

получил результат ,который и хотел!!!

2 комментария:

GuGu комментирует...

юзай полнотестовой поиск и не выёбуйся ^_^
PS: покажи explain медленного запроса

Богдан комментирует...

дык нова версия велосипеда ждет мир, в данном случае четырех колесного