Есть таблица posts с вот такими индексами:
PRIMARY id
UNIQUE post_url
UNIQUE fb_id
UNIQUE tw_id
UNIQUE yt_video_id
UNIQUE bit_id
UNIQUE ticketfly_event_id
UNIQUE entity_id, amazon_asin
UNIQUE itunes_collection_id, entity_id
UNIQUE soundcloud_id
UNIQUE event_id
UNIQUE media_id, entity_id
UNIQUE entity_id, festival_id
INDEX itunes_release_date
INDEX amazon_release_date
INDEX entity_id, post_type, is_duplicate, deleted
INDEX google_country
И есть вот такой запрос:
explain
select `bq_posts`.*
from bq_posts
where (`entity_id` in ('93', '146', '191', '909', '946', '1444', '1686', '2102', '2129', '2147', '2213', '2236', '2532', '2553', '2591', '3119', '3175', '3283', '4742', '4825', '4906', '5095', '5556' /*Еще несколько тысяч идентификаторов*/))
and `post_type` in ('facebook', 'twitter', 'youtube', 'vevo', 'itunes', 'amazon', 'soundcloud', 'bit', 'ticketfly', 'festival', 'event', 'media')
and `bq_posts`.`deleted` is null
and `bq_posts`.`is_duplicate` = '0'
limit 10 offset 0;
То есть в условии участвуют поля entity_id, post_type, deleted и is_duplicate. По моей логике сюда идеально подходит индекс
entity_id, post_type, is_duplicate, deleted, но explain показывает, что используется
entity_id, amazon_asin, который является UNIQUE. Причем выбор индекса зависит от количества идектификаторов в запросе. Их несколько тысяч, но если я их сокращаю до 10-20, то explain показывает, что используется нужный индекс (
entity_id, post_type, is_duplicate, deleted).
А все это началось при переезде с mysql 5.7 на percona server 5.7. До переезда этот запрос был мнгновенным, а теперь стал тормозить.
Что может быть не так?