SQL-запрос по определенному перечню записей или искать в найденном.

SQL-запрос по определенному перечню записей или искать в найденном.

Подскажите как найти информацию о следующем:

Имеется перечень ID строк некоей mysql-таблицы, определенный в первом запросе. Далее необходимо работать именно с этими записями, усложняя поиск. Первое, что пришло на ум: писать во втором запросе:
PHP:
WHERE (id=5 OR id=9 OR id=12 ...  OR id=66515) AND somth='somth'
Но чувствую, что это не правильно, что есть более красивое решение. Ведь этих ID может быть миллион. Как называется такое решение?

П.С. Условие первого запроса считать очень сложным и долгим и повторять его во втором запросе нецелесообразно.
 

Wicked

Новичок
а как выглдяит первый запрос? наверняка там тоже что-то похожее на anyth='anyth'... тогда в уточняющем запросе так и пиши:
PHP:
where anyth='anyth' and someth='someth'
 
Я же сказал, первый запрос считать очень сложным. Работают 3 таблицы, ищется текст регулярными выражениями, очень много условий. Выполняется секунд за 10, для веба это очень много.
 

Wicked

Новичок
ну тогда можно вставлять эти id в другую таблицу, и делать join. по крайней мере, это избавит от проблем с длиной запроса.
 
А если их очень много? Около миллиона, как это отразится на скорости? Предположим, это что-то вроде расширенного поиска по сайту. Один ищет - в таблице миллион записей, второй ищет - миллион. Через неделю эта таблица будет огромной.
 

Wicked

Новичок
Ну результаты убивать через час. При этом запоминать настройки запроса, чтобы, если юзер уточнит поиск через 2 часа, то мы смогли бы опять сделать тот 10-секундный запрос и закэшировать его еще на час.

А может имеет смысл просто тот мегасложный запрос оптимизировать?
 
Спасибо. Попробую так. Оптимизировать первый запрос буду. Я просто хотел заодно на будущее уяснить, как быть в таких ситуациях.
 
Сверху