Данный запрос очень нагружает процессор(на VPS). Тип таблицы: MYISAM В архиве 350 тысяч записей(table_archive) Запрос выводит похожие товары(актуальные и из архива) учитывая город: Код (Text): $result = mysql_query(" SELECT * FROM `table` WHERE (title LIKE '%$myrow[title]%' OR title LIKE '%$title_2%') AND city IN ($city) AND (id <> '$myrow[id]') UNION SELECT * FROM `table_archive` WHERE (title LIKE '%$myrow[title]%' OR title LIKE '%$title_2%') AND city IN ($city) AND (id <> '$myrow[id]') ORDER BY id DESC",$db); Может здесь лучше использовать MATCH AGAINST?
Вообще конструкцию LIKE '%искомое%' не рекомендуют, а тут их аж 4 в сложном запросе. Спасёт точный поиск LIKE 'искомое' или хотя бы LIKE 'искомое%'
explain и поиск оптимального решения. Там еще есть поля по которым идет поиск может и их надо проиндексировать.
Почитайте про LIMIT, какая это подлая штука. Лимит отрабатывает в конце выборки, "отсекая" ее по верхней и нижней границе. То есть, если у вас результат выборки - тысяча строк, а лимит - с 5й по 10ю, то сначала бд выберет 1000 строк, а потом откинет 4 из начала и 90 из конца. Да, энтропично, но вы же сами попросили "выбрать ВСЕ, что удовлетворяет условию, и показать результаты с такого-то по такой-то, по возможности".
LIKE '%искомое%' - где то читал что в таких случаях не помогает, или это миф? Если помогает, то что лучше FULLTEXT или INDEX?
Тоже думаю, что не поможет. Так ты попробуй. У тебя и записей уже много для замеров времени. smitt верно предлагает explain. Нужно сначала разобраться, что там происходит в запросах, где слабое место. Также считаю, что при таком количестве записей в принципе не верно использовать LIKE. Лучше бы какую-нибудь систему тегов прикрутить, чтобы искать по ключевым словам.