From: | JORGE MALDONADO <jorgemal1960(at)gmail(dot)com> |
---|---|
To: | David Johnston <polobo(at)yahoo(dot)com> |
Cc: | "pgsql-sql(at)postgresql(dot)org" <pgsql-sql(at)postgresql(dot)org> |
Subject: | Re: Advice on defining indexes |
Date: | 2013-10-04 22:23:59 |
Message-ID: | CAAY=A7_rVJzSCEjqhkjVMfbhYCHueRF2oXzrCXsjMDTVy3sX1w@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
I really appreciate your fast and very complete answer.
If a table has a foreign key on 2 fields, should I also create an index
composed of such fields?
For example:
-----------------------
Table Sources
-----------------------
1. src_id
2. src_date
3. Other fields . . .
Here, the "primary key" is "src_id + src_date". One "src_id" can exist for
several "src_date".
-----------------------
Table Lists
-----------------------
1. lst_id
2. lst_source (points to src_id)
3. lst_date
4. Other fields . . .
Here, the "foreign key" is "lst_source + lst_date".
Regards,
Jorge Maldonado
On Fri, Oct 4, 2013 at 5:09 PM, David Johnston <polobo(at)yahoo(dot)com> wrote:
> JORGE MALDONADO wrote
> > I have a table with fields that I guess would be a good idea to set as
> > indexes because users may query it to get results ordered by different
> > criteria. For example:
> >
> > ------------------
> > Artists Table
> > ------------------
> > 1. art_id
> > 2. art_name
> > 3. art_bday
> > 4. art_sex
> > 5. art_country (foreign key, there is a table of countries)
> > 6. art_type (foreign key, there is a table of types of artists)
> > 7. art_email
> > 8. art_comment
> > 9. art_ bio
> >
> > "art_id" is the primary key.
> > Users query the table to get results ordered by fields (2) to (6). Is it
> > wise to define such fields as indexes?
> >
> > I ask this question because our database has additional tables with the
> > same characteristics and maybe there would be many indexes.
> >
> > With respect,
> > Jorge Maldonado
>
> Some thoughts:
>
> Indexes for sorting are less useful than indexes for filtering. I probably
> would not create an index if it was only intended for sorting. Note that
> in
> many situations the number of ordered records will be fairly small so
> on-the-fly sorting is not going to be that expensive anyway.
>
> Indexes decrease insertion/update performance but generally improve
> selection performance. The relative volume of each is important.
>
> Index keys which contain a large number of rows are generally ignored in
> favor of a table scan. For this reason gender is seldom indexed.
>
> You have the option of a partial index if a single key contains a large
> number of records. Simply index everything but that key. Smaller indexes
> are better and any searches for the ignored key would end up skipping the
> index in many cases anyway.
>
> Consider create full-text search indexes on the comment/bio column and you
> can probably also add in the other fields into some form of functional
> index
> so that performing a search over that single field will in effect search
> all
> of the columns.
>
> I'd probably index country and type to make the foreign key lookups faster
> and then create a functional full-text index on the different text fields.
> I would then add an index on art_bday and call it done. You can then write
> a view/function that performs a full-text search against the functional
> index (or just create an actual column) for most text searches and have
> separate criteria filters for country/type/birthday.
>
> David J.
>
>
>
>
>
>
>
> --
> View this message in context:
> http://postgresql.1045698.n5.nabble.com/Advice-on-defining-indexes-tp5773423p5773424.html
> Sent from the PostgreSQL - sql mailing list archive at Nabble.com.
>
>
> --
> Sent via pgsql-sql mailing list (pgsql-sql(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-sql
>
From | Date | Subject | |
---|---|---|---|
Next Message | David Johnston | 2013-10-04 22:38:06 | Re: Unique index VS unique constraint |
Previous Message | David Johnston | 2013-10-04 22:09:03 | Re: Advice on defining indexes |