ایندکس ها می توانند کارایی دستوراتی مثل select را بالا ببرند، اما آیا تاثیرات مثبتی نیز بر روی دستورات "DML : زبان مدیریت داده ها" دارند. دموی زیر نشان می دهد که ایندکس ها بعضی مواقع چقدر می توانند بد باشند . در ابتدا با استفاده از کد زیر یک جدول ایجاد می کنم و 1 میلیون سطر به آن اضافه می کنم .
orclz>
orclz> create table t1 (c1 number);
Table created.
orclz> set timing on
orclz> insert into t1 select rownum from dual connect by level <= 1000000;
1000000 rows created.
Elapsed: 00:00:02.58
orclz>
حالا دوباره همین کار را انجام می دهیم با این تفاوت که این بار ستون مورد نظر ایندکس گذاری شده است :
orclz>
orclz> drop table t1;
Table dropped.
Elapsed: 00:00:00.13
orclz> create table t1 (c1 number);
Table created.
Elapsed: 00:00:00.01
orclz> create index i1 on t1 (c1);
Index created.
Elapsed: 00:00:00.02
orclz> insert into t1 select rownum from dual connect by level <= 1000000;
1000000 rows created.
Elapsed: 00:00:10.29
orclz>
زمان برای اضافه شدن این رکوردها چهار برابر گردید. من جداولی را دیده ام که بیست یا سی ایندکس داشته است مثل ایندکس های ترکیبی گسترده و یا ایندکس های تابعی پیچیده. تاثیرات این حجم از دستورات DML واقعا ویران کننده است. اگرچه این تست نه چندان علمی ممکن است در محیط کاری شما چندان کاربردی نباشد، اما می تواند به خوبی به شما نشان دهد که ایندکس ها هزینه های خاص خودشان را نیز دارند. هر گاه خواستید از آنها استفاده کنید مطمئن گردید که واقعا به آن نیاز دارید .
این تست از طریق نسخه دیتا بیس 12.1.0.2 ، ویندوز 10 و بر روی لپ تاپ دل با دیسک SSD انجام گردید.