MySQL索引基础
  

暴躁的钢索 35581人觉得有帮助

{{ttag.title}}
索引(在MySQL中也称为键)是一种方便存储引擎快速查找行的数据结构。索引是提高性能的关键因素,当数据表很大的时候显得十分重要。通常,小型的数据库即便不使用合适的索引,性能表现得也很不错。但是随着数据量的增加,性能将直线下降。不幸的是,索引经常被忘记或者误解。因此,不重视索引是现实世界中性能问题的罪魁祸首。
索引优化也许是查询性能最有力的手段,常常能够带来数量级的性能提升,而优化后的索引则可能在较好的索引基础上再提升数倍的性能。但是需要注意,真正地使用上优化后的索引通常会需要你重写查询语句。
理解MySQL索引最简单的方式是想象一本书的目录。为了找到书中讲述的一个主题,你会首先从目录找,然后目录会告诉你具体在哪一页。在MySQL中,存储引擎使用索引的方式和书本目录类似。它首先在索引数据结构中找到一个值,一旦找到匹配的索引值就可以找到匹配的数据行。例如下面的语句:
mysql>SELECT first_name FROM salila.actor WHERE actor_id = 5;

actor_id是一个索引列,因此MySQL会通过索引找到actor_id为5的行。换言之,它首先在索引中查找匹配的值,然后再返回包含指定值的数据行。
索引可以包含数据表的一个或多个列。如果索引包含超过一个列,那查询语句中WHERE条件列的顺序很重要。因为MySQL是按照最左匹配原则使用索引(即从最左的WHERE条件开始匹配)。在两个列上创建一个索引和分别在两个列创建各自独立的索引并不相同。
使用ORM是否需要关注索引?
毫无疑问,使用ORM也需要关注索引。ORM会生成逻辑和语法正确的查询语句,但很少会生成索引优化的查询语句(除非是最简单的那种查询方式,例如主键查询)。不管复杂度如何,你都不能将性能寄希望于ORM去解决索引的复杂性和巧妙性。

打赏鼓励作者,期待更多好文!

打赏
暂无人打赏

新手242312 发表于 2022-12-28 16:05
  
ORM去解决索引的复杂性和巧妙性。
Mr程 发表于 2023-1-31 13:49
  
解决索引的复杂性和巧妙性。
沧海 发表于 2023-2-27 18:53
  
感谢楼主分享,学习一下
一个无趣的人 发表于 2023-4-7 10:34
  
我在社区摸爬滚打这么多年,所谓阅人无数,就算没有见过猪走路,也总明白猪肉是啥味道的。一看到楼主的气势,我就觉得楼主同在社区里灌水的那帮小混子有着本质的差别,你一定就是传说中的最强技术牛。
发表新帖
热门标签
全部标签>
新版本体验
每日一问
标准化排查
信服课堂视频
GIF动图学习
纪元平台
产品连连看
平台使用
社区新周刊
功能体验
安全效果
高手请过招
【 社区to talk】
答题自测
技术笔记
网络基础知识
云化安全能力
专家问答
安装部署配置
上网策略
2023技术争霸赛专题
每周精选
畅聊IT
技术圆桌
在线直播
MVP
升级
安全攻防
测试报告
日志审计
问题分析处理
流量管理
每日一记
运维工具
用户认证
原创分享
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
排障笔记本
产品预警公告
玩转零信任
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
卧龙计划
华北区拉练
天逸直播
以战代练
秒懂零信任
技术晨报
技术盲盒
山东区技术晨报
文档捉虫
齐鲁TV
华北区交付直播
2024年技术争霸赛
北京区每日一练
场景专题
故障笔记
排障那些事
西北区每日一问
升级&主动服务
高频问题集锦
POC测试案例
全能先锋系列
专家说
热门活动
产品动态
行业实践
产品解析
关键解决方案

本版达人

新手89785...

本周建议达人

YangZhe...

本周分享达人