Skip site navigation (1) Skip section navigation (2)

Re: Не исп

From: "Alexander M(dot) Pravking" <fduch(at)antar(dot)bryansk(dot)ru>
To: "Denis A(dot) Egorov" <denis(dot)egorov(at)virtonconsultants(dot)com>
Cc: pgsql-ru-general list <pgsql-ru-general(at)postgresql(dot)org>
Subject: Re: Не исп
Date: 2005-05-11 16:00:17
Message-ID: 20050511160017.GG717@dyatel.antar.bryansk.ru (view raw or flat)
Thread:
Lists: 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

In response to

pgsql-ru-general by date

Next:From: Viktor VislobokovDate: 2005-05-23 06:14:19
Subject: Создание индекса на большу таблицу
Previous:From: Denis A. EgorovDate: 2005-05-11 14:21:10
Subject: Re: Не исп

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group