وجود اینکس باعث بهبود عملکرد دستورات select در بخش های where ، group by ، order by ، union، minus و intersect خواهد شد.
اگر ستونی شرایط ذیل را داشته باشد میتوان بر روی آن ایندکس تعریف کرد
- برای مراجعه به جدول فوق از ستون زیاد استفاده شود
- در جایی که ستون جدولcardinality (تنوع مقادیر) بالایی داشته باشد از ایندکس Btree و در جایی که ستون جدولcardinality (تنوع مقادیر) پایین داشته باشد از ایندکس Bitmap استفاده میگردد
- برای تعریف ایندکس Btree تنوع مقادیر ستون باید مابین 3 تا 7 درصد باشد Index باشد
- روی ستونی که مقادیر null زیادی دارد نباید Index Btree تعریف شود چون مقادیر null در درخت ایندکس قرار داده نمیشود
- اگر در where clause از ستون دارای ایندکس با استفاده از عملگر منطقی or استفاده شود از ایندکس Btree استفاده نمیشود
- ایندکس باعث کندی دستورات DML میشود زیرا با هر تغییر در دادههای جدول درخت ایندکس rebuild میشود.
- اگر ستونی با استفاده از تابع در where clause استفاده میشود به جای تعریف ایندکس ساده باید از function index استفاده شود
Create index ix_hire_date
On employees(trunc(hire_date));
Select * from employees e
Where trunc(hire_date)=date ’2012-07-27’