查询优化技术系列讲座之使用索引的

机械泵2021年09月06日

索引是提高查询速度的最重要的工具。当然还有其它的一些技术可供使用,但是一般来说引起最大性能差异的都是索引的正确使用。在MySQL邮件列表中,人们经常询问那些让查询运行得更快的方法。在大多数情况下,我们应该怀疑数据表上有没有索引,并且通常在添加索引之后立即解决了问题。当然,并不总是这样简单就可以解决问题的,因为优化技术本来就并非总是简单的。然而,如果没有使用索引,在很多情况下,你试图使用其它的方法来提高性能都是在浪费时间。首先使用索引来获取最大的性能提高,接着再看其它的技术是否有用。  这一部分讲述了索引是什么以及索引是怎么样提高查询性能的。它还讨论了在某些环境中索引可能降低性能,并为你明智地选择数据表的索引提供了一些指导方针。在下一部分中我们将讨论MySQL查询优化器,它试图找到执行查询的效率最高的方法。了解一些优化器的知识,作为对如何建立索引的补充,对我们是有好处的,因为这样你才能更好地利用自己所建立的索引。某些编写查询的方法实际上让索引不起作用,在一般情况下你应该避免这种情形的发生。

索引的优点

对于这部影片中蕴含的意味和哲学思想 让我们开始了解索引是如何工作的,首先有一个不带索引的数据表。不带索引的表仅仅是一个无序的数据行集合。例如,图1显示的ad表就是不带索引的表,因此如果需要查找某个特定的公司,就必须检查表中的每个数据行看它是否与目标值相匹配。这会导致一次完全的数据表扫描,这个过程会很慢,如果这个表很大,但是只包含少量的符合条件的记录,那么效率会非常低。

图2是同样的一张数据表,但是增加了对ad表的company_num数据列的索引。这个索引包含了ad表中的每个数据行的条目,但是索引的条目是按照 company_num值排序的。现在,我们不是逐行查看以搜寻匹配的数据项,而是使用索引。假设我们查找公司13的所有数据行。我们开始扫描索引并找到了该公司的三个值。接着我们碰到了公司14的索引值,它比我们正在搜寻的值大。索引值是排过序的,因此当我们读取了包含14的索引记录的时候,我们就知道再也不会有更多的匹配记录,可以结束查询操作了。因此使用索引获得的功效是:我们找到了匹配的数据行在哪儿终止,并能够忽略其它的数据行。另一个功效来自使用定位算法查找第一条匹配的条目,而不需要从索引头开始执行线性扫描(例如,二分搜索就比线性扫描要快一些)。通过使用这种方法,我们可以快速地定位第一个匹配的值,节省了大量的搜索时间。数据库使用了多种技术来快速地定位索引值,但是在本文中我们不关心这些技术。重点是它们能够实现,并且索引是个好东西。

赣州哪里治白癜风最好
昆明早泄
慢性浅表性胃炎怎么办
相关阅读
2款高速电摩来了,3999元起,最大极短150公里,适合长途通勤

阅读本文前,再三您先点击上面的“追捧”,可以APP电子书我们的最新内容,...

2024-12-30
今年必入「拖鞋」,不妨在这 7 双之中挑

每年秋季,除了 Aloha Shirt、短袖、上衣以外,一双身身着精采安静,又能让整...

2024-12-30
存储巨头们,拼成什么?

打印器是现代信息系统会的极为重要子系统之一,其普遍应用普遍,低价巨大...

2024-12-29
广西经贸职业技术学院举行2022届许多学生毕业典礼

本文转自:人民网-广西南宁频道大学毕业骊歌起,甜蜜将长途旅行。6月24日...

2024-12-28
新进展!国际研究团队发现"渐冻症"疗法新靶点

计算机科学在抑制剂研发中的极为重要日益重要的配角。近日,中的国学者策...

2024-12-25
明星天地人:千玺、任嘉伦、李现、杨颖、鞠婧祎、李沁、刘昊然等

我们是影视圈的搬运工 1、黄圣依《花木兰》早已到终于宣传期,上映时间未...

2024-12-25
友情链接