A good Index Selection
The ratio of the number
of distinct values in the indexed column / columns to the number
of records in the table represents the selectivity of an index.
Example with good
Selectivity
A table having 100'000 records and one of its
indexed column has 88000 distinct values, then the selectivity of this index is
88'000 / 10'0000 = 0.88.
Oracle implicitly creates indexes on the columns of all unique and
primary keys that you define with integrity constraints. These indexes are the
most selective and the most effective in optimizing performance. The
selectivity of an index is the percentage of rows in a table having the same
value for the indexed column.
Example with
bad Selectivity
lf an index on a table of 100'000 records had
only 500 distinct values, then the index's selectivity is 500 / 100'000 = 0.005
and in this case a query which uses the limitation of such an index will retum
100'000 / 500 = 200 records for each distinct value. It is evident that a full
table scan is more efficient as using such an index where much more
I/O is needed to scan repeatedly the index and the table.
How to Measure Index
Selectivity ?
Manually measure index
selectivity
The ratio of the number of distinct values to
the total number of rows is the selectivity of the columns. This method is
useful to estimate the selectivity of an index before creating it.
select
count (distinct job) "Distinct Values" from emp;
Distinct Values
---------------
5
Distinct Values
---------------
5
select
count(*) "Total Number Rows" from emp;
Total Number Rows
-----------------
14
Selectivity = Distinct Values / Total Number Rows
= 5 / 14
= 0.35
Total Number Rows
-----------------
14
Selectivity = Distinct Values / Total Number Rows
= 5 / 14
= 0.35

0 comments:
Post a Comment