sql複合索引使用和注意事項

一、定義:    sql

單一索引:數據庫

單一索引是指索引列爲一列的狀況,即新建索引的語句只實施在一列上;     優化

 

複合索引:spa

複合索引也叫組合索引;設計

用戶能夠在多個列上創建索引,這種索引叫作複合索引(組合索引)。code

複合索引在數據庫操做期間所需的開銷更小,能夠代替多個單一索引;    htm

同時有兩個概念叫作窄索引和寬索引,窄索引是指索引列爲1-2列的索引,寬索引也就是索引列超過2列的索引;     blog

設計索引的一個重要原則就是能用窄索引不用寬索引,由於窄索引每每比組合索引更有效;索引

 

二、使用:   table

建立複合索引 :

CREATE INDEX columnId ON table1(col1,col2,col3) ;

查詢語句: 

select * from table1 where col1= A and col2= B and col3 = C

這時候查詢優化器,不在掃描表了,而是直接的從索引中拿數據,由於索引中有這些數據,這叫覆蓋式查詢,這樣的查詢速度很是快;  

 

 三、注意事項:    

一、對於複合索引,在查詢使用時,最好將條件順序按找索引的順序,這樣效率最高;    

select * from table1 where col1=A AND col2=B AND col3=D 

若是使用

where col2=B AND col1=A

或者 

where col2=B

將不會使用索引。

 

二、什麼時候是用複合索引     根據where條件建索引是極其重要的一個原則;     注意不要過多用索引,不然對錶更新的效率有很大的影響,由於在操做表的時候要化大量時間花在建立索引中

三、複合索引會替代單一索引麼     若是索引知足窄索引的狀況下能夠創建複合索引,這樣能夠節約空間和時間

 

四、備註:    

 對一張表來講,若是有一個複合索引 on   (col1,col2),就沒有必要同時創建一個單索引 on col1;    

若是查詢條件須要,能夠在已有單索引 on col1的狀況下,添加複合索引on (col1,col2),對於效率有必定的提升;     

同時創建多字段(包含五、6個字段)的複合索引沒有特別多的好處,相對而言,創建多個窄字段(僅包含一個,或頂多2個字段)的索引能夠達到更好的效率和靈活性。

 

五、例子:

 

轉自:https://www.cnblogs.com/summer0space/p/7247778.htm

相關文章
相關標籤/搜索