Проблема с производительностью Postgresql COALESCE

У меня есть эта таблица в 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 = ?

Is есть ли какое-либо решение, кроме оптимизации строки запроса на уровне приложения?

РЕДАКТИРОВАТЬ: Практически вопрос заключается в том, как переписать запрос select * from my_table, где id = coalesce (?, id) и value =? , чтобы иметь производительность в худшем случае не ниже, чем у select * from my_table where value =? в Postgresql 9.0

7
задан Tair 23 June 2011 в 07:40
поделиться