Последовательное сканирование совершенно нормально в Amazon Redshift, так как он не использует индексы.
Система достаточно умна, чтобы пропускать блоки , которые не содержат желаемых значений, поскольку каждый блок (который содержит данные только для одного столбца) хранит минимум и максимум каждого значения в блоке. Таким образом, блок со всеми датами до 2018-01-01
будет автоматически пропущен.
Это не будет отображаться в плане EXPLAIN, поскольку оно зависит от фактических данных, хранящихся в каждом блоке.
Лучше всего запустить несколько тестов и посмотреть, работает ли он быстро, как и следовало ожидать. Вы бы хотели запустить SET enable_result_cache_for_session TO OFF
, чтобы кэширование не влияло на результаты.
Также старайтесь избегать ситуаций, когда КЛЮЧ СОРТИРОВКИ приведен к другому типу. В приведенном выше примере, если столбец представляет собой DATE, но запрос использует его в качестве TIMESTAMP, он может не иметь возможности пропускать блоки, поскольку ему необходимо преобразовать значение после его чтения с диска. Поэтому, это может работать лучше, если там, где используется тот же тип данных.