ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL之索引

2021-12-01 09:33:35  阅读:150  来源: 互联网

标签:性能 actor 查询 索引 ORM MySQL


索引(在MySQL中也叫做“键(key)”)是存储引擎用于快速找到记录的一种数据结构。 这是索引的基本功能,除此之外,本章还将讨论索引其他一些方面有用的属性。
索引对于良好的性能非常关键。尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要。在数据量较小且负载较低时,不恰当的索引对性能的影响可能还不明显,但 当数据量逐渐增大时,性能则会急剧下降。
不过,索引却经常被忽略,有时候甚至被误解,所以在实际案例中经常会遇到由糟糕索引导致的问题。这也是我们把索引优化放在了靠前的章节,甚至比査询优化还靠前的原因。
索引优化应该是对査询性能优化最有效的手段了。索引能够轻易将查询性能提高几个数量级,“最优”的索引有时比一个“好的”索引性能要好两个数量级。创建一个真正“最 优”的索引经常需要重写査询,所以,本章和下一章的关系非常紧密。

索引基础

要理解MySQL中索引是如何工作的,最简单的方法就是去看看一本书的“索引”部分: 如果想在一本书中找到某个特定主题,一般会先看书的“索引”,找到对应的页码。

在MySQL中,存储引擎用类似的方法使用索引,其先在索引中找到对应值,然后根据 匹配的索引记录找到对应的数据行。假如要运行下面的査询:

mysql> SELECT first_ame FROM sakila.actor WHERE actor_id = 5;

如果在actor_id列上建有索引,则MySQL将使用该索引找到actor_id为5的行,也 就是说,MySQL先在索引上按值进行査找,然后返回所有包含该值的数据行。

索引可以包含一个或多个列的值。如果索引包含多个列,那么列的顺序也十分重要,因 为MySQL只能高效地使用索引的最左前缀列。创建一个包含两个列的索引,和创建两 个只包含一列的索引是大不相同的,下面将详细介绍。

如果使用的是ORM,是否还需要关心索引?

简而言之:是的,仍然需要理解索引,即使是使用对象关系映射(ORM)工具。

(ORM)工具能够生产符合逻辑的、合法的查询(多数时候),除非只是生成非常基本 的查询(例如仅是根据主键查询),否则它很难生成适合索引的查询。无论是多么 复杂的(ORM)工具,在精妙和复杂的索引面前都是“浮云”。读完本章后面的内容 以后,你就会同意这个观点的!很多时候,即使是查询优化技术专家也很难兼顾到 各种情况,更别说(ORM) 了。

标签:性能,actor,查询,索引,ORM,MySQL
来源: https://www.cnblogs.com/zhaokejin/p/15626217.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有