分析sql語句中索引是否被使用
阿新 • • 發佈:2019-01-30
面試的時候被問了一個問題,因為對資料庫一直是我的短腿,所以沒回答出來。
問題是 如何分析表中的索引在sql語句中是否被使用。查詢了一些資料,現將使用過程進行總結
1、查詢表中的索引
select * from user_indexes where table_name='WORKLOG';(大寫表名)
我查詢出並選擇索引是PK_WORKLOG該索引建在LINTERID欄位上,
2、另 查詢所有聚集型索引(與分析索引無關)
select * from user_indexes where uniqueness='UNIQUE'
3、確定了表和表中的索引後,就要執行分析索引的語句,如下
alert index PK_WORKLOG monitoring usage;
這時候資料庫會監控索引的使用情況
4、執行相關的sql語句,如
select * from WORKLOG T where T.LINTERID='110';
被分析的索引一定要在查詢條件裡,這樣索引才能被分析
5、最後查詢索引的使用情況。
select table_name,index_name,used from v$object_usage;
在used列就可以看到索引是否被使用,
由此分析,在複雜的sql語句語句中可以將語句分離,可以先單獨的分析每個表的索引使用情況。
本文章只是為了以後複習的方便。寫的比較簡單。