#yyds干货盘点#MySQL索引优化系列:(二)索引全用及最左法则

优化MySQL的性能,主要从索引方面优化,本篇就主要讲解复合索引全用及最左前缀法则来对MySQL进行优化。复合索引全用 第一篇MySQL索引优化系列:(一)索引的类型里面有说过复合索引是什么,也就是对表上的多个列进行索引。复合索引全用的意思就是对于建立的复合索引中包含了几个字段,查询的时候最好能全部用到,而且严格按照索引顺序,这样查询效率是最高的。当然实际使用中要按照具体情况来分析,以上只是说一个理想状况。 下面来实际操作一下: SQL脚本: CREATE TABLE `people` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(10) DEFAULT NULL, `age` int(11) DEFAULT NULL, `sex` char(4) DEFAULT NULL, `class` varchar(10) DEFAULT NULL, `birthday` date DEFAULT NULL, PRIMARY KEY (`Id`), KEY `idx_name_age_sex_class` (`name`,`age`,`sex`,`class`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1026 DEFAULT CHARSET=utf8 然后插入了1024条 INSERT INTO `test`.`people` (`name`, `age`, `sex`, `class`, `birthday`) VALUES ('张三', '17', '男', '1', '2021-03-02') 和1条 INSERT INTO `test`.`people` ( `name`, `age`, `sex`, `class`, `birthday`) VALUES ('李四', '25', '女', '2', '2021-02-24') 不同的查询条件对比: EXPLAIN SELECT * from people where name="李四 =>查询时间:0.027s key_len :33 EXPLAIN SELECT * from people where name="李四" and age="25 =>查询时间:0.026s key_len :38 EXPLAIN SELECT * from people where name="李四" and age="25" and sex="女" =>查询时间:0.024s key_len :51 EXPLAIN SELECT * from people where name="李四" and age="25" and sex="女" and class="2 =>查询时间:0.023s key_len :84最左前缀法则 最左前缀也跟复合索引有关,索引的顺序要按照建立时的顺序来进行索引,不然就不会使用创立的复合索引。就是从左到右的顺序来写sqlu、语句。 还是以上面的例子来说: EXPLAIN SELECT * from people where name="李四" and age="25" and sex="女" and class="2 假如我们改成以下的方式来查询,来看下还会不会使用创造的复合索引? EXPLAIN SELECT * from people where age="25" and sex="女" and class="2" EXPLAIN SELECT * from people where sex="女" EXPLAIN SELECT * from people where class="2" and name="张三" and class="1" EXPLAIN SELECT * from people where name="张三" and sex="女" and class="2" EXPLAIN SELECT * from people where class="2" and name="张三" and sex="女 答案是第1、第2、第3不会,第4、第5会。 来看下1、2、3: 再看下4、5: 我们可以看出来推导出最左前缀法则就是:带头大哥不准死、中间兄弟不可断以上就是今天的分享,如有错误,请大佬们多多包涵,多多指正!谢谢~

锦绣源码库是一家优秀的网站源码学习交流平台,为广大源码爱好者提供优质的小程序源码、APP源码、H5源码、商城源码教程以及公众号模块教程,大部分是会员免费,网站长期受到各站长的收藏及浏览。
用户必须遵守《计算机软件保护条例(2013修订)》第十七条:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。鉴于此条例,用户从本平台下载的全部源码(软件)教程仅限学习研究,未经版权归属者授权不得商用,若因商用引起的版权纠纷,一切责任均由使用者自行承担,本平台所属公司及其雇员不承担任何法律责任。
锦绣源码库 » #yyds干货盘点#MySQL索引优化系列:(二)索引全用及最左法则
赞助VIP 享更多特权,立即登录下载海量资源
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡