【发布时间】:2015-11-18 10:45:35
【问题描述】:
我已经四处寻找答案,但我能找到的唯一参考是一个晦涩的论坛帖子,该帖子表明运算符,包括 % (modulo) “sargable”(即可以使用运算符正在操作的索引)
但是,我们在某些情况下使用模来并行化我们的进程似乎不使用模所在的索引,即使在主键字段上也是如此。这可能是优化器决定表扫描无论如何都更便宜,但很难确定回避索引的原因。
有没有人有明确的答案,或者有类似的经历?
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
【问题讨论】:
-
如果您使用该表达式创建索引,那么是的,如果 Postgres 可以提高性能,它将使用该索引。但是您需要将表定义 (
create table ...) 和查询添加到您的问题中,以便正确回答。见这里:stackoverflow.com/tags/postgresql-performance/info -
这是一个非常笼统的问题。我将添加一个示例。
-
部分索引是可能的,除了我们希望模“并行化”是可配置的......
标签: postgresql indexing enterprisedb