У меня есть таблица ключевых слов, которые я регулярно обновляю с помощью API удаленного поиска, и еще одна таблица, в которой каждый раз при обновлении одного из ключевых слов появляется строка. Я использую эту таблицу, чтобы запретить нескольким процессам наступать друг на друга и обновлять одно и то же ключевое слово, а также собирать статистику. Поэтому, когда я запускаю свою программу, она запрашивает все ключевые слова, которые не имеют запроса в данный момент в обработке и не имеют успешного запроса в течение последних 15 минут или любого другого интервала. Некоторое время все работало нормально, но теперь в таблице keywords_requests почти 2 миллиона строк, и все сильно тормозит. У меня есть индексы почти для каждого столбца в таблице keywords_requests, но безрезультатно.
Я регистрирую медленные запросы, а этот, как видите, занимает целую вечность. Что я могу сделать?
# Query_time: 20 Lock_time: 0 Rows_sent: 568 Rows_examined: 1826718 SELECT Keyword.id, Keyword.keyword FROM `keywords` as Keyword LEFT JOIN `keywords_requests` as KeywordsRequest ON ( KeywordsRequest.keyword_id = Keyword.id AND (KeywordsRequest.status = 'success' OR KeywordsRequest.status = 'active') AND KeywordsRequest.source_id = '29' AND KeywordsRequest.created > FROM_UNIXTIME(1234551323) ) WHERE KeywordsRequest.id IS NULL GROUP BY Keyword.id ORDER BY KeywordsRequest.created ASC;