From: | Martijn van Oosterhout <kleptog(at)svana(dot)org> |
---|---|
To: | Andrus <eetasoft(at)online(dot)ee> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: Best way to use indexes for partial match at |
Date: | 2005-11-11 10:52:38 |
Message-ID: | 20051111105237.GC13177@svana.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Fri, Nov 11, 2005 at 11:31:37AM +0200, Andrus wrote:
> Best solution is as follows:
>
> Planner must use index
>
> CREATE TABLE foo ( bar CHAR(10) PRIMARY KEY );
>
> for queries like
>
> SELECT * FROM foo WHERE bar::CHAR(3)='ABC';
Your query is the same as using LIKE, so why not express it that way?
Is it that unreasonable that a PRIMARY KEY should use the most natural
way to order strings for your locale and that if you want to use LIKE
in non-C locales that you need to specify that explicitly?
PRIMARY KEY == UNIQUE + NOT NULL
Incidently, another way might be COLLATE support, something like:
CREATE TABLE foo ( bar CHAR(10) PRIMARY KEY COLLATE like_compatable );
But that's already on the cards.
[1] http://gborg.postgresql.org/project/citext/projdisplay.php
--
Martijn van Oosterhout <kleptog(at)svana(dot)org> http://svana.org/kleptog/
> Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a
> tool for doing 5% of the work and then sitting around waiting for someone
> else to do the other 95% so you can sue them.
From | Date | Subject | |
---|---|---|---|
Next Message | Sergey Karin | 2005-11-11 10:59:51 | [8.1] "drop table" in plpgsql function |
Previous Message | Lincoln Yeoh | 2005-11-11 09:45:28 | Re: PREPARE TRANSACTION and webapps |