This affirmation that it indeed does work set me straight. I inadvertently made 
a previously immutable UUID function volatile; it was providing the UUIDs in 
the query.

> On Nov 9, 2014, at 2:12 PM, Tom Lane <t...@sss.pgh.pa.us> wrote:
> 
> Kevin Wooten <kd...@me.com> writes:
>> I am assuming I am crazy and missing something completely obvious but I 
>> cannot get postgres (9.3.5) to use an index on a UUID, ever. 
> 
> Worksforme:
> 
> regression=# create table foo (f1 uuid primary key);
> CREATE TABLE
> regression=# explain select * from foo where f1 = 
> 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11';
>                                QUERY PLAN                                
> --------------------------------------------------------------------------
> Index Only Scan using foo_pkey on foo  (cost=0.15..8.17 rows=1 width=16)
>   Index Cond: (f1 = 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'::uuid)
> (2 rows)
> 
>> The main table has a natural composite key (2 uuids and a timestamp) with 
>> which it always uses the timestamp as the index condition and filters on the 
>> UUIDs.
> 
> This probably has little to do with the datatype as such, and much to do
> with the specifics of your query, the available indexes, and the table's
> statistics.  It's hard to speculate further without lots more detail
> about those things.
> 
>                       regards, tom lane



-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to