| From: | "Brent R(dot)Matzelle" <bmatzelle(at)yahoo(dot)com> |
|---|---|
| To: | PostgreSQL PHP <pgsql-php(at)postgresql(dot)org> |
| Subject: | Fooling the query optimizer |
| Date: | 2001-02-08 15:41:59 |
| Message-ID: | 20010208154156.9447813AB5@ml-samba.mdc.mlhs.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-php |
Have any of you discovered a way to get around the current query optimizer
limitation in Postgres? For example, I have a table that has three columns
that I want to index for frequent search duties. In Postgres I am forced to
create three indicies: one including all three columns, one for col2 and
col3, and one for just col3. Databases like MySQL can use the first index
for these types of queries "SELECT * WHERE col2 = x AND col3 = y" and "SELECT
* WHERE col3 = y". Postgres could only perform queries on indicies where it
looks like "SELECT * WHERE col1 = x AND col2 = y AND col3 = z" and "SELECT *
WHERE col1 = x AND col2 = y" etc. However adding extra indexes as above
would decrease the write speed on that table because a simple insert would
require an update on all three indicies.
Is there a way to fool Postgres to use the first index by creating a query
like "SELECT * WHERE col1 = * AND col3 = x"? I know I'm grasping for straws
here, but these issues can kill my database query performance.
Brent
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Adam Lang | 2001-02-08 16:26:03 | Re: Fooling the query optimizer |
| Previous Message | Hahaha | 2001-02-08 11:11:21 | Snowhite and the Seven Dwarfs - The REAL story! |