Мне нужна помощь в индексации в MySQL.
У меня есть таблица в MySQL со следующими строками:
ID Store_ID Feature_ID Order_ID Viewed_Date Deal_ID IsTrial
Идентификатор генерируется автоматически. Store_ID - от 1 до 8. Feature_ID - от 1, скажем, 100. Дата просмотра - это дата и время, когда данные вставляются. IsTrial: 0 или 1.
Вы можете игнорировать Order_ID и Deal_ID из этого обсуждения.
В таблице содержатся миллионы данных, и у нас есть серверная часть отчетности, которая должна просматривать количество просмотров за определенный период или в целом, где пробная версия равна 0 для определенного идентификатора магазина и для определенной функции.
Запрос принимает форму:
select count(viewed_date)
from theTable
where viewed_date between '2009-12-01' and '2010-12-31'
and store_id = '2'
and feature_id = '12'
and Istrial = 0
В SQL Server вы можете использовать отфильтрованный индекс для использования в Istrial. Есть ли что-нибудь подобное в MySQL? Кроме того, Store_ID и Feature_ID содержат много повторяющихся данных. Я создал индекс, используя Store_ID и Feature_ID. Хотя это, похоже, сократило период поиска, мне нужно лучшее улучшение, чем это. Прямо сейчас у меня более 4 миллионов строк. Для поиска конкретного запроса, подобного приведенному выше, он просматривает 3,5 миллиона строк, чтобы подсчитать 500 000 строк.
PS. Я забыл добавить фильтр view_date в запросе. Теперь я сделал это.