Ключ индекса mysql не предоставляется, если не ограничен результат запроса - PullRequest
0 голосов
/ 25 марта 2019

В моей таблице две группы индексов с именем 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 

не выберет ни одного.

Я ожидаю, что ключ индекса будет выбран, даже если результаты не ограничены.

...