Как оптимизировать MySQL-запрос, используя многостолбцовые индексы?

Я очень новичок в индексировании MySQL. Я пытаюсь создать индексы для web_products Таблица.
Я создал индекс IsDataActive_IsVerified_IsExpired_Price_Sale оптимизировать приведенный ниже запрос;

SELECT
MAX(Price_Sale) as maxColumn
FROM
`web_products` `t`
WHERE
IsDataActive = 1 AND IsVerified = 1
AND IsExpired = 0

и когда я анализирую запрос с помощью Explain Я получаю наилучший результат "Select tables optimized away",

У меня есть другой запрос, который выполняет очень плохо. web_products Таблица может содержать миллионы продуктов. Выполнение запроса ниже занимает несколько минут;

SELECT
COUNT(P.BrandID)
FROM
web_products AS P
WHERE
P.OriginalItemID IS NULL
AND P.IsDataActive = 1
AND P.IsExpired = 0
AND P.IsVerified = 1;

BrandID это ФК в brands Таблица. Здесь Объяснить анализ для вышеуказанного запроса.
Как оптимизировать вышеуказанный запрос?

Обновление 1

Index Упомянутый в ответе очаровательно работает на вышеуказанные запросы. Я могу получить результаты менее чем за 0,200 мс.

Я изменил второй запрос и добавил MerchantID к индексу теперь требуется 1 секунда, чтобы выполнить запрос ниже. Объяснение показывает количество rows examined является 88331, Есть ли способ довести время выполнения до миллисекунд?

SELECT
P.BrandID, COUNT(P.BrandID) as Count, B.Name
FROM
web_products AS P
inner join
web_brands as B ON P.BrandID = B.ID
INNER JOIN
web_merchants M ON P.MerchantID = M.ID
LEFT JOIN
web_products_features F ON P.ID = F.Product_ID
WHERE
P.OriginalItemID IS NULL
AND P.IsDataActive = 1
AND P.IsExpired = 0
AND P.IsVerified = 1
AND B.IsDataActive = 1
group by P.BrandID
order by Count desc
Limit 100

1

Решение

Лучший индекс для обоих запросов:

web_products(IsDataActive, IsExpired, IsVerified, OriginalItemId, BrandId, Price_Sale)

Порядок первых трех столбцов не имеет значения. Это должно работать для первого запроса, потому что это индекс покрытия. Если это влияет на производительность, то используйте два индекса и отбросьте Price_Sale из этого.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]