Я добавил несколько индексов в одну таблицу PostgreSQL, я фактически добавил их во все столбцы, являющиеся внешним ключом другой таблицы.
Теперь операторы SELECT, использующие эти столбцы, работают в 5-10 раз быстрее, чемдо этого
SELECT * FROM table where indexed_column_fk=5000
но обычный оператор SELECT
SELECT * from table
намного медленнее (почти в 2 раза медленнее).
Как это возможно?
Также, когда я использую EXPLAIN ANALYZE, я получаю, что Общая стоимость увеличена с помощью индексов?
ОБНОВЛЕНИЕ: ВЫБРАТЬ * из таблицы с индексами
Seq Scan on my_table (cost=0.00..26440.40 rows=343040 width=86) (actual time=0.292..756.614 rows=343040 loops=1)
Planning Time: 72.249 ms
Execution Time: 766.601 ms
без индексов (когда я их сбрасываю)
Seq Scan on my_table (cost=0.00..26440.40 rows=343040 width=86) (actual time=0.022..194.712 rows=343040 loops=1)
Planning Time: 0.095 ms
Execution Time: 204.613 ms
Я запускаю это на локальном ПК с помощью pgAdmin 4
Обновление 2
Результаты после прогрева кэша
Обновление 3 - для иллюстрации: при сканировании таблицы с использованием индекса