No index only scan on md5 index

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hey all,

I have an attachment table in my database which stores a file in a bytea column, the file name, and the size of the file.

Schema: 
CREATE TABLE attachment
(
  attachment_id uuid NOT NULL DEFAULT gen_random_uuid(),
  attachment_name character varying NOT NULL,
  attachment_bytes_size integer NOT NULL,
  attachment_bytes bytea NOT NULL,
  CONSTRAINT attachment_pkey PRIMARY KEY (attachment_id)
);

I do lookups on this table based on the md5 of the attachment_bytes column, so I added an index: 
CREATE INDEX idx_attachment_bytes_md5 ON attachment ((md5(attachment_bytes)::uuid));

Queries like this are sped up by the index no problem:
SELECT attachment_id
FROM attachment
WHERE md5(attachment_bytes)::uuid = 'b2ab855ece13a72a398096dfb6c832aa';

But if I wanted to return the md5 value, it seems to be totally unable to use an index only scan:
SELECT md5(attachment_bytes)::uuid
FROM attachment;


[Postgresql General]     [Postgresql PHP]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Yosemite]

  Powered by Linux