[MySQL] 聯合索引與using index condition


1.測試聯合索引的最左原則的時候, 發現了5.6版本后的新特性Index Condition Pushdown

2.含義就是存儲引擎層根據索引盡可能的過濾數據,然后在返回給服務器層根據where其他條件進行過濾

3.比如我有這樣的聯合索引 KEY `name_gid_age_index` (`name`,`gid`,`age`) , 查詢的時候where name='taoshihan' and age=1 , 沒有按順序連續查條件, 后面那個age就用不到索引

4.這時就會出現下面的情況

CREATE TABLE `index_test` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL DEFAULT '',
  `gid` int(11) NOT NULL DEFAULT '0',
  `age` int(11) NOT NULL DEFAULT '0',
  `score` int(10) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `name_gid_age_index` (`name`,`gid`,`age`),
  KEY `score_index` (`score`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

5. type值為range、 ref、 eq_ref或者ref_or_null的時候 , 會使用到索引條件下推技術

 

  


免責聲明!

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



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