(本文章內容僅在windows10下經測試能夠運行,不能保證其他環境下的可靠性)
oracle中索引的概念:在列上創建一個二叉樹
oracle中索引的特點:
1、大幅度提高查詢效率。
2、影響寫入數據的效率。
單列索引的創建和觸發條件
單列索引的創建代碼如下:
---創建索引 create index idx_ename on emp(ename);
觸發條件:查詢條件必須包含索引列的原始值,使用單行函數和模糊查詢均會影響單列索引的觸發
復合索引的創建和觸發條件
復合索引的創建代碼如下:
---創建復合索引 create index idx_enamejob on emp(ename,job);
觸發條件:查詢條件必須包含復合索引的優先檢索列的原始值
優先檢索列:創建索引時()括號中的第一個字段
根據以上索引案例使用查詢語句觸發索引情況的辨析:
案例1、查詢代碼如下:
select * from emp where ename = 'SCOTT' and job = 'xx';--觸發復合索引
觸發復合索引
案例2、查詢代碼如下:
---當查詢條件即是單列索引的原始值又是復合索引的優先檢索列的原始值時,只觸發單列索引 select * from emp where ename = 'SCOTT';--只觸發單列索引
觸發單列索引
案例3、查詢代碼如下:
---查詢條件包含復合索引的優先索引列的原始值或單列索引的原始值
--但存在or時,不觸發索引
--(若所有或的條件均為復合索引的優先索引列的原始值或單列索引的原始值時,是否觸發索引筆者尚不明確) select * from emp where ename = 'SCOTT' or job = 'xx';
不觸發索引
