1

我已经四处寻找答案,但我能找到的唯一参考资料是一个晦涩的论坛帖子,该帖子表明包括 % (模)在内的运算符“sargable”(即可以使用运算符正在运行的索引)

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

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

Postgres/EDB v9.3

蒂亚。

编辑例如

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

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

SELECT othercolumn from my_table where id % 1000 = 0
4

1 回答 1

2

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

于 2015-11-18T10:51:53.477 回答