Обсуждение: When NOT to index small tables?

Поиск
Список
Период
Сортировка

When NOT to index small tables?

От
Дата:
I have found many reasons not to index small tables (see .
But I still have questions.

1. How small is small enough?
2. am I supposed to drop primary key index on so called 'label tables'
knowing I am using this pk in join clause?
3. Is it good to drop index on small table If I know I have created VIEW and
joined large table and the small one
and I have where condition on that particular colum?
Ilustrative example:
table small
{
id -- primary key
colum_for_where_condition -- index or not to index?
}
table large
{
...
fk_for_small_table -- indexed
...
}
create view as select .....
inner join on common_column ..
I have migrated from mysql .
I have found that complex view expression takes about 10 sec using ordinary
planner,
but genetic alg takes about 5 sec. Strange?
I can give details if someone is interested.

Regards,
Alvis



Re: When NOT to index small tables?

От
Bruno Wolff III
Дата:
On Wed, Aug 20, 2003 at 13:01:16 +0300,
  alvis@piladzi-2.biz wrote:
> I have found many reasons not to index small tables (see .
> But I still have questions.
>
> 1. How small is small enough?

Unless you think maintaining the indexes is a significant overhead, you
shouldn't worry about it as the planner will choose whether or not to
use them according to what it thinks is faster.

> 2. am I supposed to drop primary key index on so called 'label tables'
> knowing I am using this pk in join clause?

I don't think you want to drop any indexes that are used to enforce
constraints.

> 3. Is it good to drop index on small table If I know I have created VIEW and
> joined large table and the small one
> and I have where condition on that particular colum?

If you have some other reason for creating the index, you probably don't
want to drop it to try to speed up queries. If there isn't some reason you
have for keeping the index, then you might want to drop it if it isn't
helping your queries as maintaining the index will slow down queries
that modify the table.