Re: Bad query plan when the wrong data type is used

Поиск
Список
Период
Сортировка
От Vitalii Tymchyshyn
Тема Re: Bad query plan when the wrong data type is used
Дата
Msg-id 4D5263EC.9000205@gmail.com
обсуждение исходный текст
Ответ на Re: Bad query plan when the wrong data type is used  (Dave Crooke <dcrooke@gmail.com>)
Список pgsql-performance
09.02.11 01:14, Dave Crooke написав(ла):
You will get the same behaviour from any database product where the query as written requires type coercion - the coercion has to go in the direction of the "wider" type. I have seen the exact same scenario with Oracle, and I view it as a problem with the way the query is written, not with the database server.

Whoever coded the application which is making this query presumably knows that the visa.id field is an integer type in the schema they designed, so why are they passing a float? Convert the 4.0 to 4 on the application side instead, it's one function call or cast.
Actually the problem may be in layers, and the  problem may even be not noticed until it's late enough. As far as I remember from this list there are problems with column being integer and parameter prepared as bigint or number. Same for number vs double vs float.
As for me it would be great for optimizer to consider the next:
1) val1::narrow = val2::wide as (val1::narrow = val2::narrow and val2::narrow = val2::wide)
2) val1::narrow < val2::wide as (val1::narrow < val2::narrow and val1::wide < val2::wide)
3) val1::narrow > val2::wide as (val1::narrow + 1 > val2::narrow and val1::wide > val2::wide)
Of course it should use additional check it this allows to use an index.
Surely, this is not an easy thing to implement, but as for me similar question are raised quite often in this list.

Best regards, Vitalii Tymchyshyn

В списке pgsql-performance по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Query Core Dumping
Следующее
От: felix
Дата:
Сообщение: Re: Really really slow select count(*)