首页 > 解决方案 > 在大部分为 0 的列上建立索引不起作用

问题描述

我一直在尝试在我的表上使用索引时遇到麻烦。

对于表items,我有一个名为market. 如果market= 0,则不出售 - 如果值大于 0(例如 100),则出售,价格为 100 美元。

但是,我有数千万行不出售的物品。一次可能有大约 1000 件左右的商品在出售(有价格)。

我正在尝试快速查询以选择市场大于 0 的所有行;

SELECT market FROM items WHERE market > 0.

但是,这需要相对较长的时间,并且使用 SEQ 扫描而不是我拥有的索引market。任何帮助将不胜感激,或者我的问题的另一种方法。

标签: postgresqlpartial-index

解决方案


你可以在你的表上写部分索引items

CREATE INDEX idx_items_inactive
ON customer(market)
WHERE market> 0;

如果问题中提到的查询,它将使用索引扫描


推荐阅读