復合索引的優點和注意事項


概念:     單一索引是指索引列為一列的情況,即新建索引的語句只實施在一列上;     用戶可以在多個列上建立索引,這種索引叫做復合索引(組合索引);    

復合索引在數據庫操作期間所需的開銷更小,可以代替多個單一索引;     同時有兩個概念叫做窄索引和寬索引,窄索引是指索引列為1-2列的索引,寬索引也就是索引列超過2列的索引;  

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

使用:     創建索引     create index idx1 on table1(col1,col2,col3)      查詢     select * from table1 where col1= A and col2= B and col3 = C  

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

 

注意事項:     1、對於復合索引,在查詢使用時,最好將條件順序按找索引的順序,這樣效率最高;     select * from table1 where col1=A AND col2=B AND col3=D  

           如果使用 where col2=B AND col1=A 或者 where col2=B 將不會使用索引
    2、何時是用復合索引     根據where條件建索引是極其重要的一個原則;     注意不要過多用索引,否則對表更新的效率有很大的影響,因為在操作表的時候要化大量時間花在創建索引中

    3、復合索引會替代單一索引么     如果索引滿足窄索引的情況下可以建立復合索引,這樣可以節約空間和時間

備注:     對一張表來說,如果有一個復合索引 on   (col1,col2),就沒有必要同時建立一個單索引 on col1;     如果查詢條件需要,可以在已有單索引 on col1的情況下,

添加復合索引on (col1,col2),對於效率有一定的提高     同時建立多字段(包含5、6個字段)的復合索引沒有特別多的好處,

相對而言,建立多個窄字段(僅包含一個,或頂多2個字段)的索引可以達到更好的效率和靈活性

 

提示:

      在實際應用索引時,在建表的同時建立索引,即在建表的sql中添加建立索引的sql,應用實例如下:

CREATE TABLE tbl_camera_info (
    `cameraId` varchar(64) NOT NULL COMMENT '鏡頭唯一編號,統一監控平台',
    `cameraName` varchar(128) NOT NULL COMMENT '鏡頭名稱',
    `clientId` varchar(64) NOT NULL COMMENT '所屬客戶編號',
    `clientName` varchar(128) DEFAULT NULL COMMENT '所屬客戶名稱',
    `lastTime` dateTime NOT NULL COMMENT '最后修改時間',
    PRIMARY KEY (`cameraId`,`clientId`)
)ENGINE INNODB DEFAULT CHARSET=utf8 COMMENT='鏡頭設備信息總表';

以上建立的一個cameraId和clientId的主鍵唯一復合索引。

 

轉載請注明出處。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM