postgresql - 在大部分为 0 的列上建立索引不起作用
问题描述
我一直在尝试在我的表上使用索引时遇到麻烦。
对于表items
,我有一个名为market
. 如果market
= 0,则不出售 - 如果值大于 0(例如 100),则出售,价格为 100 美元。
但是,我有数千万行不出售的物品。一次可能有大约 1000 件左右的商品在出售(有价格)。
我正在尝试快速查询以选择市场大于 0 的所有行;
SELECT market FROM items WHERE market > 0
.
但是,这需要相对较长的时间,并且使用 SEQ 扫描而不是我拥有的索引market
。任何帮助将不胜感激,或者我的问题的另一种方法。
解决方案
你可以在你的表上写部分索引items
CREATE INDEX idx_items_inactive
ON customer(market)
WHERE market> 0;
如果问题中提到的查询,它将使用索引扫描
推荐阅读
- hibernate - 如何为 Hibernate 动态模型定义一对多关系
- version-control - Dymola .bak-mo 文件
- php - 无法使用 ddev 为 php7.4 启用 php-gmp
- r - 计算 data.frame 列的中位数
- proxy - 适用于 Chrome 浏览器的 Fitnesse 设置代理
- database - 如何正确插入一些特殊字符,如 ¤ 到 Oracle 数据库
- python - 如何遍历后缀列表以添加到列表中每个变量的末尾?
- java - 根据另一个列表中的重复索引从列表中删除重复项
- reactjs - Next.js 中的 Django {% block %} 和 {% extends %} 标签的等价物是什么?
- python - 模拟装饰器函数以绕过装饰器逻辑