我在 Postgresql 中有这张表:
CREATE TABLE my_table
(
id bigint NOT NULL,
value bigint,
CONSTRAINT my_table_pkey PRIMARY KEY (id)
);
my_table 中有 ~50000 行。
问题是,为什么要查询:
SELECT * FROM my_table WHERE id = COALESCE(null, id) and value = ?
比这个慢:
SELECT * FROM my_table WHERE value = ?
除了优化应用层中的查询字符串之外,还有什么解决方案吗?
编辑:实际上,问题是如何重写查询select * from my_table where id=coalesce(?, id) and value=?
以使最坏情况下的性能不低于select * from my_table where value=?
Postgresql 9.0中的性能