我在一个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在本地PC上运行
更新2
缓存预热后的结果
更新3-出于说明目的:当我使用索引扫描表时