Re: Index usage with differing string types - Mailing list pgsql-general

From Adrian Klaver
Subject Re: Index usage with differing string types
Date
Msg-id 34ea369e-6814-427d-96fe-fe8e5fb41e0e@aklaver.com
Whole thread Raw
In response to Index usage with differing string types  (Henning Garus <henning.garus@gmail.com>)
List pgsql-general
On 2/4/25 08:23, Henning Garus wrote:
> Hi,
> 
> I stumbled upon this behaviour when digging into the performance of some 
> merge statements generated by hibernate.
> 
> Looking at different String types (varchar, text and bpchar) in some 
> cases an index is used when the index type differs from the type in the 
> query, in some cases it isn't used.
> 
> Given a table with an index on a bpchar column:
> 
> create table test (id bpchar(8) primary key);
> 
> Both of the following queries use the index:
> 
> explain select * from test where id = 'foo'::bpachar(3);
> explain select * from test where id = 'foo'::varchar;
> 
> However when the String is cast to text the index isn't used:
> 
> explain select * from test where id = 'foo'::text;

The output from EXPLAIN ANALYZE on each of the queries would be useful.


> 
> This behavior seems to be consistent across postgres 12, 16 and 17.
> 
> I find it surprising that the cast to varchar behaves differently than 
> the cast to text, is this intended behaviour?
> 
> Cheers
>    Henning
> 

-- 
Adrian Klaver
adrian.klaver@aklaver.com




pgsql-general by date:

Previous
From: Henning Garus
Date:
Subject: Index usage with differing string types
Next
From: Michał Kłeczek
Date:
Subject: Re: Lookup tables