Re: Case Insensitive searches

Поиск
Список
Период
Сортировка
От Frank Bax
Тема Re: Case Insensitive searches
Дата
Msg-id 48971B8C.2050805@sympatico.ca
обсуждение исходный текст
Ответ на Re: Case Insensitive searches  (Terry Lee Tucker <terry@chosen-ones.org>)
Ответы Re: Case Insensitive searches  (Terry Lee Tucker <terry@chosen-ones.org>)
Список pgsql-sql
Terry Lee Tucker wrote:
> On Monday 04 August 2008 10:05, Richard Broersma wrote:
>> On Mon, Aug 4, 2008 at 6:54 AM, Mike Gould <mgould@allcoast.net> wrote:
>>> In some db's if you
>>> use a lower() or upr() it will always do a table scan instead of using a
>>> index
>> True, this would also happen in PostgreSQL.  However, you can overcome
>> this by creating a "functional" index:
>>
>> http://www.postgresql.org/docs/8.3/interactive/indexes-expressional.html
>>
>> This way all expression using where lower( column ) = 'a'. will always
>> use an index scan.
>>
> 
> What about using the operator, ~*  ?
> 
> Does that cause a table scan as well?




Whether or not any query uses an index scan or seq scan depends on many 
factors and is not always easily predictable.

Richard's statement about "will always use an index scan" is not 
universally true.  If the table is very small; a index scan is NOT used.  Table statistics could also indicate a seq
scanis more efficient 
 
(suppose 99% of rows had column='a').

The ~* operator is very likely to scan the entire table because it will 
look for 'A' anywhere in the column (and will therefore match 'Joanne'; 
and I doubt that there is special code to handle case where length of 
argument is exactly the same as column.  However; ~* '^a' which anchors 
search to first character is perhaps more likely to use an index scan.

Frank


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

Предыдущее
От: Terry Lee Tucker
Дата:
Сообщение: Re: Case Insensitive searches
Следующее
От: Terry Lee Tucker
Дата:
Сообщение: Re: Case Insensitive searches