Re: Не исп
От | Alexander M. Pravking |
---|---|
Тема | Re: Не исп |
Дата | |
Msg-id | 20050511160017.GG717@dyatel.antar.bryansk.ru обсуждение исходный текст |
Ответ на | Re: Не исп ("Denis A. Egorov" <denis.egorov@virtonconsultants.com>) |
Список | pgsql-ru-general |
On Wed, May 11, 2005 at 05:21:10PM +0300, Denis A. Egorov wrote: > Но вот нашёл такую вот особенность, что если делать > > SELECT ... ib='12121' > > то приведение не нужно, а индекс используется... > > А в доках про такое ни где не написано. В общем-то, закавыченные константы - это правильно :) Насколько я знаю, закавыченная константа изначально имеет псевдотип unknown и всегда приводится к типу того, с чем она сравнивается. Константы вида 12.34 изначально numeric, вида 1234 - integer или bigint в зависимости от того, влезает она в signed int4 или нет. И получалось, что для сравнения в данном случае значения bigint-столбца с int4-константой значение столбца неявно приводилось к int4, и индекс в этом случае не мог быть использован. (Странно, но сейчас попробовал на 7.4.7 построить индекс по (id::integer), но он тоже не используется - возможно, я неправ. Пусть меня поправят, если что.) В восьмёрке же Tom похимичил над неявным приведением типов, и проблема решилась. Кстати, была она не только с bigint. > ---------------------------(end of broadcast)--------------------------- > TIP 8: explain analyze is your friend Самый нужный tip ;) -- Fduch M. Pravking
В списке pgsql-ru-general по дате отправления: