【发布时间】:2021-11-03 02:28:51
【问题描述】:
我意识到一件有趣的事情。我有一个具有多列索引的表。
CREATE INDEX transaction_idx ON transaction USING btree (period_id, day_id, value_type, indicator_id);
当我像这样运行查询时:
select *
from transaction
where period_id = '202104'
and day_id = 30
and value_type = 1
and indicator_id = 2
DB 将进行 seq 扫描。
但如果我只是将 day_id 值更改为 20,那么 DB 将进行索引扫描。 去索引扫描
进行序列扫描 如果有人可以与我分享这件事的根本原因,我将不胜感激。
谢谢!
【问题讨论】:
-
你能展示一下你的表结构(
CREATE TABLE transaction ...),尤其是day_id列的数据类型吗? -
嗨@Edouard H。感谢您的评论,我刚刚解决了这个问题并分享我的解决方案。
标签: postgresql indexing