Для этого запроса вам нужен следующий индекс:
create index myindex on mytable(year, goal_id, target)
Это дает вам охватывающий индекс : все столбцы, которые вступают в игру в запросе, являются частью индекса, так что это дает базе данных хорошую возможность выполнить запрос, просматривая только индекс (без фактического рассмотрения data ).
Порядок столбцов в индексе важен: первые два столбца соответствуют предикатам where
, а последний столбец - это столбец, который вступает в игру в предложении select
.
В зависимости от мощности ваших данных, вы также можете попробовать инвертировать первые два столбца:
create index myindex on mytable(goal_id, year, target)
Основная идея заключается в том, что вы хотите сначала поставить более строгие критерии.