Search Postgresql Archives

Re: Indexing Question

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

 



On Thu, Jan 12, 2006 at 01:16:00PM -0800, Mike wrote:
> Hi,
> 
> My table structure is the following:
> 
> tbl_A ----one-to-many---> tbl_B ----one-to-many---> tbl_C
> 
> Since it was important for me to trace back tbl_C records back to
> tbl_A, I placed a tbl_A_id inside tbl_C.
> 
> Now, in order to optimize my database for speed, I want to index my
> tbl_B for it's tbl_A_id. So far so good. Now, with tbl_C, it makes
> sense that all records of tbl_A sit next to eachother so I could index
> tbl_A_id (which are not used as often in my queries), or index by
> tbl_B_id. Or both of them.

Your breaking a tenant of good database design: normalize 'til it hurts,
denormalize 'til it works (where works in this case means performs
adequately).

In other words, don't keep tbl_a_id in tbl_c unless you know for certain
you need it for performance reasons.

> To be clear, my question is: Does it make sense for me to index a table
> by field_1 with the intention of having postgreSQL place those records
> next to each other for faster queries that wouldn't necessarily
> reference field_1?

Indexes have absolutely nothing to do with the order in which rows are
stored in a table, unless you cluster the table on an index (which is
still only temporary).

Without knowing what your normal access patterns on tbl_c will be it's
impossible to say if clustering on an index on tbl_a_id would help or
not.
-- 
Jim C. Nasby, Sr. Engineering Consultant      jnasby@xxxxxxxxxxxxx
Pervasive Software      http://pervasive.com    work: 512-231-6117
vcard: http://jim.nasby.net/pervasive.vcf       cell: 512-569-9461


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux