在Oracle中,可以通過以下幾種方式來查看SQL是否使用了索引:
- 使用SQL Trace:通過啟用SQL Trace,可以跟蹤SQL語句的執(zhí)行過程,包括使用的索引和執(zhí)行計劃等信息??梢允褂靡韵抡Z句來啟用SQL Trace:
ALTER SESSION SET SQL_TRACE = TRUE;
SQL Trace的輸出可以通過查看trace文件來分析。
- 使用自動跟蹤功能(Automatic Workload Repository,AWR):AWR可以記錄和存儲數(shù)據(jù)庫的性能信息,包括SQL語句的執(zhí)行計劃和索引使用情況等??梢允褂靡韵抡Z句來查看SQL語句的執(zhí)行計劃:
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('<sql_id>'));
通過查看執(zhí)行計劃,可以判斷SQL語句是否使用了索引。
- 使用SQL優(yōu)化器提示:可以使用SQL優(yōu)化器提示來指導(dǎo)優(yōu)化器選擇特定的執(zhí)行計劃,包括使用或者禁用特定的索引??梢栽赟QL語句中使用以下提示來強(qiáng)制使用索引:
/*+ INDEX(table_name index_name) */
如果SQL語句使用了這個提示,那么可以確定該SQL語句使用了指定的索引。
- 使用動態(tài)性能視圖(Dynamic Performance Views,DPV):Oracle提供了一系列的DPV,可以查詢數(shù)據(jù)庫的運行狀態(tài)和統(tǒng)計信息,包括索引的使用情況。可以使用以下DPV來查詢SQL語句的執(zhí)行計劃和索引使用情況:
SELECT * FROM V$SQL_PLAN;
SELECT * FROM V$SQL_PLAN_STATISTICS;
SELECT * FROM V$SQLSTATS;
通過查看這些DPV的結(jié)果,可以判斷SQL語句是否使用了索引。