私は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 = ?
app-layerでクエリ文字列を最適化する以外に解決策はありますか?
編集:実際には、問題は、Postgresql9.0select * from my_table where id=coalesce(?, id) and value=?
のパフォーマンス以上の最悪の場合のパフォーマンスを持つようにクエリを書き直す方法です。select * from my_table where value=?