MySQL索引基础
  

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

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

本版达人