通过前面对索引类型,以及索引对数据的组织方式等了解,本章节来说说索引的匹配和SQL的优化(索引方面的)。
下面用到的例子的数据库来自mysql官网的例子下载地址:官网的数据库
1. 索引匹配
索引匹配这里大致分为了以上六种。下面通过例子一一来讲解。
city表中 Name和CountryCode组成组合索引。
1.1 全值匹配
SELECT * FROM city WHERE `Name`='Kabul' AND CountryCode = 'AFG'
1.2 匹配最左前缀
SELECT * FROM city WHERE `Name`='Kabul' AND District = 'Kabol';
SELECT * FROM city WHERE CountryCode = 'AFG' AND District = 'Kabol';
1.3 匹配列前缀
select * from city where District like 'Ov%';
select * from city where District like '%Ov%';
1.4 匹配范围值
select Population from city where Population > 201843;
1.5 精确匹配某一列并且范围匹配另一列
select * from city where Name = 'Breda' and CountryCode > 'NLD';
1.6 只访问索引的查询(覆盖索引)
select Name,CountryCode,District,Population from city where Name = 'Breda' and CountryCode = 'NLD';
2. SQL优化
sql优化意义是获取相同的数据能够用最小的时间。SQL的优化有很多方面,例如提高硬件的处理能力。在同一个SQL下硬件处理能力越强的你们SQL也就越快。比如网络的延迟等等。我们这边的SQL主要考虑的是通过优化SQL本身和建立适当的索引来降低查询所需要的时间。
-
对字段建立适当的索引
这里说的是建立适当的索引。不是索引越多越好。根据实际情况建立适当的索引。在建立索引的过程中也会有技巧。
-
建表的字段
一般对于建表的字段来说,根据业务需求建立对应的字段大小。等等
-
SQL本身的优化
何为SQL本身的优化,例如业务需要表A中的a、b 、c三个字段。在查询的就应该根据条件返回这三个字段。而不是返回全部的字段。这样全部返回增加网络的负担。同样也增加了数据库的负担。 很可能导致一些索引使用不了。
我是蚂蚁背大象,文章对你有帮助点赞关注我,文章有不正确的地方请您斧正留言评论~谢谢!