プロが教えるわが家の防犯対策術!

ただいまオラクルマスターのブロンズSQL基礎Iを勉強中です。

インデックスについて覚えたのですが、インデックスをつけた状態とそうでない状態の差が実感できません。
大量にデータが存在しないとわからないものだとは思いますが、なにか実感できる手段はないでしょうか?

SQLをたたいてから結果が返ってくる時間をしらべることができれば、ミリセックの違いでも感じられると思うのですが。

よい方法をご存知でしたら教えてください。

A 回答 (2件)

SQLの実行はSQL*Plusですか?


簡単な方法は以下です。

SQL> set timi on
SQL> select count(*) from tab;
COUNT(*)
----------
96
経過: 00:00:00.02

あとは実行計画をとれば索引を使っているかわかります。
以下を参考にしてください。
http://www.shift-the-oracle.com/sqlplus/tutorial …
    • good
    • 0

以下のようなSQLを実行すれば一番体感できると思います。


インデックスが有るか無いかで十分体感できるほどの差があるかと思います。

検証用テーブル作成
create table test (col1 number);

データ挿入
declare
i := 1;
begin
for i in 1..100000
insert into test values (i);
if mod(i,1000)=0 then commit;
end if;
end loop;
end;
/


インデックス無しでのSELECT(フルスキャン)
select * from test where col1 = 100;

インデックス作成
create index ind_test on test (col1);

インデックスありでのSELECT(インデックススキャン)
select * from test where col1 = 100;

検証用テーブル削除
drop table test purge;

実際には上記のようにインデックスを張ればすぐに使ってくれるとういうほど易しいものではないので
いかに自分が意図した実行計画(この言葉も勉強しているかと思います。)となるように操作できるかにかかっています。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!