Thread: Index usage

Index usage

From
Subra Radhakrishnan
Date:
Hi All,

The index created by me is not being used while doing
select. I found that out by using the EXPLAIN. For
example:

Table department has 
----------------
dept_num
dept_desc


Table 'employee' looks like this:
--------------------------------
emp_num primary key,
emp_name,
dept_num (this is by way of foreign key relation from
department table)

Now, I create an index on the employee table using
'dept_num' as the attribute. And when I run select
which looks like:

Explain Select * from employee where dept_num =
'Finance';

It does not use the index and tells me that a
Sequential scan will be done on the table employee.

How do I fix this? 

Thanx in advance,

Subra

__________________________________________________
Do You Yahoo!?
Get personalized email addresses from Yahoo! Mail - only $35 
a year!  http://personal.mail.yahoo.com/


Re: Index usage

From
Stephan Szabo
Date:
On Fri, 8 Jun 2001, Subra Radhakrishnan wrote:

> Hi All,
> 
> The index created by me is not being used while doing
> select. I found that out by using the EXPLAIN. For
> example:
> 
> Table department has 
> ----------------
> dept_num
> dept_desc
> 
> 
> Table 'employee' looks like this:
> --------------------------------
> emp_num primary key,
> emp_name,
> dept_num (this is by way of foreign key relation from
> department table)
> 
> Now, I create an index on the employee table using
> 'dept_num' as the attribute. And when I run select
> which looks like:
> 
> Explain Select * from employee where dept_num =
> 'Finance';
> 
> It does not use the index and tells me that a
> Sequential scan will be done on the table employee.
> 
> How do I fix this? 

Have you run vacuum analyze, what's the full schema
(with types) and the explain output?




Re: Index usage

From
Peter Eisentraut
Date:
Subra Radhakrishnan writes:

> Now, I create an index on the employee table using
> 'dept_num' as the attribute. And when I run select
> which looks like:
>
> Explain Select * from employee where dept_num =
> 'Finance';
>
> It does not use the index and tells me that a
> Sequential scan will be done on the table employee.
>
> How do I fix this?

Unless you can prove that an index scan is going to be faster than a
sequential scan, you don't.  Just because there's an index doesn't mean
it's always the best choice to use it.

-- 
Peter Eisentraut   peter_e@gmx.net   http://funkturm.homeip.net/~peter