索引就是在表的列上構建一棵二叉樹,達到大幅度提高查詢效率的目的,但是索引會影響增刪改的效率。
比如說,我們將表看作是書,一開始這些書都是沒有目錄的,如果要查詢某一段文字,需要一頁一頁的去翻,查詢效率特別低。為了提高查詢的效率,我們就在每本書上新增乙個目錄,而這個目錄是用二叉樹形式儲存的,這樣查詢的效率就會大幅度提高。書中的目錄就是表中的索引。但是索引會影響增刪改的效率,因為每次執行增、刪、改的操作後,都會重新去構建一棵索引的二叉樹。
單列索引是基於單個列所建立的索引。
1、建立單列索引
create
index idx_ename on emp(ename)
;
2、單列索引觸發規則
條件必須是索引列中的原始值。
select
*from emp
where ename =
'scott'
諸如單行函式 [ 比如 upper() 函式 ]、模糊查詢都會影響索引的觸發。
復合索引是基於兩個列或多個列的索引。在同一張表上可以有多個索引,但是要求列的組合必須不同。
1、建立復合索引
create
index idx_enamejob on emp(ename, job)
;
2、復合索引觸發規則
復合索引中第一列為優先檢索列,如果要觸發復合索引,必須包含有優先檢索列中的原始值。
觸發復合索引
select
*from emp
where ename =
'scott'
and job =
'xx'
;
不觸發復合索引。用 or 連線可以將查詢語句看作是兩個條件不同的查詢語句,乙個觸發索引,另乙個不觸發索引,用 or 連線後就是不觸發復合索引
select
*from emp
where ename =
'scott'
or job =
'xx'
;
如果一張表同時擁有單例索引和復合索引,使用下面的語句,觸發的是單列索引
select
*from emp
where ename =
'scott'
;
Oracle資料庫學習筆記 一
微軟 sql server 和 access 瑞典mysql ab公司 mysql ibm公司 db2 美國sybase公司 sybase ibm公司 informix 美國oracle公司 oracle 小型資料庫 access 中型資料庫 sql server mysql informix 大型...
資料庫 Oracle學習筆記(1)
類class class student 學生物件public class student byte b 100 int i 10000 double d 3.14 char c 我 boolean f true id name age1001 張三30 1002 李四25 nickname pas...
資料庫 Oracle學習筆記(4)
select from emp 查詢表中所有列 select ename,sal from emp 查詢表中ename列,和sal列 select concat ename,的工資是 from emp smith的工資是 smith的工資是 sal smith的工資是800 select conca...