В моей таблице две группы индексов с именем smp
, когда я запускаю explain
для одного и того же запроса без ограничения результатов запроса, ключ не выбирается, но ключ добавляется при добавлении ограничения.
У меня есть два индекса:
smp_time_updated_group_name_sub_group_index (time_updated, group_name, sub_group)
smp_time_updated_group_name_sub_group_name_index (time_updated, group_name, sub_group, name)
Когда я запускаю этот запрос:
SELECT
`name`,
`group_name`,
`sub_group`,
`value`,
`units`,
`time_updated`
FROM
`smp`
WHERE
`group_name` = 'System Data'
AND `sub_group` = 'System'
AND `time_updated` BETWEEN '2019-01-01 00:00:00'
AND '2019-02-28 08:43:00'
AND `name` IN ( 'System Demand', 'System Generation' )
ORDER BY
`time_updated` DESC
LIMIT 26
OFFSET 0
MySQL выберет один из возможных ключей индекса.
Но этот запрос:
SELECT
`name`,
`group_name`,
`sub_group`,
`value`,
`units`,
`time_updated`
FROM
`smp`
WHERE
`group_name` = 'System Data'
AND `sub_group` = 'System'
AND `time_updated` BETWEEN '2019-01-01 00:00:00'
AND '2019-02-28 08:43:00'
AND `name` IN ( 'System Demand', 'System Generation' )
ORDER BY
`time_updated` DESC
не выберет ни одного.
Я ожидаю, что ключ индекса будет выбран, даже если результаты не ограничены.