У меня есть таблица с 4 столбцами: имя, дата, версия и значение. На всех четырех есть составной индекс, в этом порядке. В нем 20 миллионов строк: 2000 имен, около 1000 дат на имя, около 10 версий на дату.
Я пытаюсь получить список, в котором для всех имен указана самая высокая дата, самая высокая версия на эту дату и соответствующее значение.
Когда я делаю
SELECT name,
MAX(date)
FROM table
GROUP BY name
Я получаю хорошую производительность, а база данных использует составной индекс
Однако, когда я присоединяю таблицу к этому, чтобы получить MAX(version)
для имени, запрос занимает годы. Должен быть способ получить результат примерно за ту же величину, что и оператор SELECT выше? Я легко могу сделать с помощью индекса.