在PostgreSQL上创建带有表达式的索引以查找非零值

时间:2017-06-20 07:13:01

标签: postgresql indexing

我正在尝试创建一个优化的部分索引来查找数字字段amount不为零的所有行。

CREATE INDEX amount_not_zero_idx ON my_table (amount)
WHERE amount <> 0;

正在运作,但这并不是我想到的,因为只有“不像零”的信息才是重要的。我想做的是像

CREATE INDEX amount_not_zero_idx ON my_table (amount <> 0)
WHERE amount <> 0;

因为它应该提供最佳性能 - 但PostgreSQL为“&lt;&gt;”提供了语法错误。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

自己找到它。问题只是缺少括号,正确的语法是

CREATE INDEX amount_not_zero_idx ON my_table ((amount <> 0))
WHERE amount <> 0;