mysql 聯合索引設計

聯合索引又叫複合索引。對於複合索引:Mysql從左到右的使用索引中的字段,一個查詢可以只使用索引中的一部份,但只能是最左側部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3種組合進行查找,但不支持 b,c進行查找 .當最左側字段是常量引用時,索引就十分有效。


索引原則

1.索引越少越好
原因:主要在修改數據時,第個索引都要進行更新,降低寫速度。
2.最窄的字段放在鍵的左邊
3.避免file sort排序,臨時表和表掃描


疑惑:重複數據多的字段是否有必要建索引。

舉例:

/* 評論表 */

CREATE TABLE `t_comment` (
  `CID` int(6) NOT NULL AUTO_INCREMENT COMMENT '主鍵',
  `DYNAMIC_ID` varchar(6) DEFAULT NULL COMMENT '動態ID',
  `UID` varchar(6) DEFAULT NULL COMMENT '發佈評論用戶ID',
  `RID` varchar(6) DEFAULT NULL COMMENT '回覆用戶ID',
  `CONTENT` varchar(200) DEFAULT NULL COMMENT '評論內容',
  `CREATE_TIME` datetime DEFAULT NULL COMMENT '發佈時間',
  `STATE` char(2) DEFAULT 0 COMMENT '評論狀態0正常 1失效',
  PRIMARY KEY (`CID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='評論表';


建立 動態ID+用戶ID+評論狀態 聯合索引

查詢效率確實有所提高。

但是評論表update操作會很頻繁,索引列多會導致索引重構變慢。

應儘量減少查詢字段,將查詢負擔由緩存分擔。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章