内容简介:我们都知道在 MySql 中使用索引可以提高查询效率,但有时候真正执行Sql查询的时候却没有按照我们的预想使用索引,而是全表扫描,导致有慢Sql影响了整个网站的效率,甚至导致网站崩溃,所以我们需要了解Mysql是如何选择使用索引的,以便建立合适的索引 (本文基于MySql5.7,InnoDB引擎)假设有一张用户表我们建立了name,height,weight 的联合索引,插入测试数据
我们都知道在 MySql 中使用索引可以提高查询效率,但有时候真正执行 Sql 查询的时候却没有按照我们的预想使用索引,而是全表扫描,导致有慢Sql影响了整个网站的效率,甚至导致网站崩溃,所以我们需要了解Mysql是如何选择使用索引的,以便建立合适的索引 (本文基于MySql5.7,InnoDB引擎)
前提:建立一张测试表
假设有一张用户表
CREATE TABLE `test_user` ( `user_id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL DEFAULT '', `birthday` date NOT NULL, `sex` tinyint(1) DEFAULT NULL, `height` int(11) NOT NULL, `weight` int(11) NOT NULL, PRIMARY KEY (`user_id`), KEY `idx_name_height_weight` (`name`,`height`,`weight`), KEY `idx_height` (`height`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 复制代码
我们建立了name,height,weight 的联合索引,插入测试数据
INSERT INTO `test_user` (`user_id`, `name`, `birthday`, `sex`, `height`, `weight`) VALUES (1, 'Tony', '1991-01-01', 1, 176, 65), (2, 'Mary', '1989-12-19', 2, 160, 50), (3, 'Tom', '1996-05-29', 1, 180, 70), (4, 'Kiven', '1994-08-09', 1, 190, 80), (5, 'John', '1992-11-12', 1, 182, 75); 复制代码
执行什么操作的时候Mysql会使用索引
查找与WHERE子句匹配的行
select * from test_user where name='mary' 复制代码
查看执行计划
可见使用了idx_name_height_weight索引
从表中删除一行数据
DELETE from test_user where name='mary'; 复制代码
查看执行计划
查找索引列的MIN()或MAX()的值
SELECT MIN(height) FROM `test_user` 复制代码
这个和之前的执行计划不太一样,Select tables optimized away(选择要优化的表)实际就是优化到不能再优化的意思,在这种情况下,MySql把每个Key的MIN() 和 MAX()值替换成一个常量,如果查到了这个常量就立即返回,然后看下面的例子,分别在索引列上和非索引列上使用MIN()函数的执行计划:
SELECT MIN(height) from `test_user` where height>=176 AND height<=190; 复制代码
SELECT MIN(height) from test_user where sex=1; 复制代码
在索引列上执行 SORT 或 ORDER BY 操作
SELECT name,height from test_user ORDER BY `name` DESC; 复制代码
注意SELECT的字段能匹配索引列,比如:
将会出现Using filesort,Using filesort 是Mysql里一种速度比较慢的外部排序,应当尽量避免
本文讲述了MySql什么时候会使用索引,下章说明什么时候MySql不能使用索引,敬请期待
以上所述就是小编给大家介绍的《MySql如何使用索引(一)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- MySQL索引使用说明(单列索引和多列索引)
- MySQL 索引失效及使用索引的优缺点
- mysql索引合并:一条sql可以使用多个索引
- mysql-使用联合索引
- B+树索引的使用
- mysql索引使用经验总结
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
复杂:信息时代的连接、机会与布局
罗家德 / 中信出版集团股份有限公司 / 2017-8-1 / 49.00 元
信息科技一方面创造了人们互联的需要,另一方面让人们在互联中抱团以寻找归属感,因此创造了大大小小各类群体的认同和圈子力量的兴起,即互联的同时又产生了聚群,甚至聚群间的相斥。要如何分析这张网?如何预测它的未来变化?如何在网中寻找机会,实现突围?本书提出了4个关键概念──关系、圈子、自组织与复杂系统: • 关系 关系是人与人的连接,又可以被分为强关系和弱关系。强关系就是和你拥有亲密关系的人,......一起来看看 《复杂:信息时代的连接、机会与布局》 这本书的介绍吧!