Index question: Select * with WHERE clause. Where and how to create index

Posted by Mestika on Stack Overflow See other posts from Stack Overflow or by Mestika
Published on 2010-05-17T09:19:26Z Indexed on 2010/05/17 9:20 UTC
Read the original article Hit count: 198

Hi,

I’m working on optimizing some of my queries and I have a query that states: select * from SC where c_id ="+c_id” The schema of ** SC** looks like this:

SC (  c_id int not null,  date_start date not null, date_stop date not null, r_t_id int not null,  nt int,  t_p decimal,   PRIMARY KEY (c_id, r_t_id, date_start, date_stop));

My immediate bid on how the index should be created is a covering index in this order:

INDEX(c_id, date_start, date_stop, nt, r_t_id, t_p)

The reason for this order I base on:

The WHERE clause selects from c_id thus making it the first sorting order. Next, the date_start and date_stop to specify a sort of “range” to be defined in these parameters Next, nt because it will select the nt Next the r_t_id because it is a ID for a specific type of my r_t table And last the t_p because it is just a information.

I don’t know if it is at all necessary to order it in a specific way when it is a SELECT ALL statement. I should say, that the SC is not the biggest table. I can say how many rows it contains but a estimate could be between <10 and 1000.

The next thing to add is, that the SC, in different queries, inserts the data into the SC, and I know that indexes on tables which have insertions can be cost ineffective, but can I somehow create a golden middle way to effective this performance.

Don't know if it makes a different but I'm using IBM DB2 version 9.7 database

Sincerely

Mestika

© Stack Overflow or respective owner

Related posts about db2

Related posts about indexing