Вот иногда бывает!!!Это сообщение типа заметки об 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 комментария:
юзай полнотестовой поиск и не выёбуйся ^_^
PS: покажи explain медленного запроса
дык нова версия велосипеда ждет мир, в данном случае четырех колесного
Отправить комментарий