postgresql - 当子句是模时,postgres可以使用索引吗

标签 postgresql indexing enterprisedb

我四处寻找这个问题的答案,但我能找到的唯一引用是一篇模糊的论坛帖子,该帖子建议运算符,包括 % (modulo) “可搜索的”(即可以使用运算符(operator)正在操作的索引)

但是,在某些情况下,我们使用模数来并行化我们的流程似乎不使用模数所在的索引,即使在主键字段上也是如此。这可能是优化器决定表扫描无论如何都更便宜,但很难确定回避索引的原因。

有没有人有明确的答案,或者分享类似的经验?

Postgres/EDB v9.3

TIA.

编辑 例如

CREATE TABLE my_table(id bigint, othercolumn varchar(50), PRIMARY KEY(id))

...向表中插入 x 百万条记录...

SELECT othercolumn from my_table where id % 1000 = 0

最佳答案

索引可用于任何不可变 的列或表达式。换句话说,表达式的结果必须完全取决于基础列的值,直接或通过它们在其中使用的表达式。因此,模运算符在索引中使用是完全有效的。

关于postgresql - 当子句是模时,postgres可以使用索引吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33777942/

相关文章:

mysql - 使用 EnterpriseDB Migration Toolkit 将 MySQL 数据库迁移到 PostgreSQL

sql - 为表中的每一行计算的 Postgres 数学表达式

java - Hibernate:如何手动创建删除模式?

sql - 分片数据库中的参照完整性?

python - Django 与 Postgresql 全文搜索日期和时间输入类型错误

sql - 数据库从 PostgreSQL 迁移到 Oracle

mysql - 创建具有约 6 列复合键的表有何含义?

sql - 为什么我的mysql不使用索引?

MongoDB 索引用于查找和排序

postgresql - 来自本地主机 Apache 的 EDB Postgres 服务器,服务器已启动并正在运行 Apache 安装中的默认 Apache 上下文是 www