找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 360160|回复: 0

六星教育:一文了解mysql索引优化设计,直接通过面试! ...

[复制链接]

该用户从未签到

发表于 2021-5-14 07:27:59 | 显示全部楼层 |阅读模式

您需要 登录 才可以下载或查看,没有账号?立即注册

×
对于很多程序员来说,掌握mysql索引优化设计是必备的技能技术,这也是在职场中经常会碰到的问题之一,也是各大面试官喜欢询问的问题。本文主要讨论MySQL索引的部分知识。也总结一些MySQL的常见使用技巧,以供没有DBA的团队参考。

                               
登录/注册后可看大图


我们需要知道什么是索引?索引其实是一种数据结构,其功能是帮助我们快速匹配查找到需要的数据行,是数据库性能优化最常用的工具之一。其作用相当于超市里的导购员、书本里的目录。
有些时候虽然数据库有索引,但是并不被优化器选择使用。我们可以通过SHOW STATUS LIKE 'Handler_read%';查看索引的使用情况。如果MySQL估计使用索引比全表扫描还慢,则不会使用索引。前导模糊查询不能命中索引。数据类型出现隐式转换的时候不会命中索引,特别是当列类型是字符串,一定要将字符常量值用引号引起来。复合索引的情况下,查询条件不包含索引列最左边部分(不满足最左原则),不会命中符合索引。
用or分割开的条件,如果or前的条件中列有索引,而后面的列中没有索引,那么涉及到的索引都不会被用到。负向条件查询不能使用索引,可以优化为in查询。建立索引的列,不允许为null。虽然IS NULL可以命中索引,但是NULL本身就不是一种好的数据库设计,应该使用NOT NULL约束以及默认值。
对于自己编写的SQL查询语句,要尽量使用EXPLAIN命令分析一下,做一个对SQL性能有追求的程序员。衡量一个程序员是否靠谱,SQL能力是一个重要的指标。作为后端程序员,深以为然。

                               
登录/注册后可看大图


了解MySQL的特点有助于更好的使用MySQL,MySQL和其它常见数据库最大的不同在于存在存储引擎这个概念,存储引擎负责存储和读取数据。不同的存储引擎具有不同的特点,用户可以根据业务的特点选择适合的存储引擎,甚至是开发一个新的引擎。
如果表中有一列存储较长字符串,假设名字为URL,在此列上创建的索引比较大,有个办法可以缓解:创建URL字符串的数字哈希值的索引。再新建一个字段,比如叫做URL_CRC,专门放置URL的哈希值,然后给这个字段创建索引。
多列索引的顺序很重要,通常,不考虑排序和分组查询时,应该把选择性(选择性是指某表索引列不同数据的个数/总行数。选择性高意味着重复数据少)大的列放到前面。简单地说,某些查询只需要查询索引列,那么就不用再根据索引B树节点记录的主键ID进行二次查询了。
以上就是关于mysql索引优化部分内容,如果有什么不懂的,可以留言与小编互动哦!

                               
登录/注册后可看大图


六星教育是六星教育网络科技有限公司旗下的专属培训机构,从事网站开发培训,网络营销培训,细分为PHP技术培训,JAVA技术培训,HTML5前端技术培训,Python大数据Linux运维培训,每年为社会培养大量的IT人才!
回复

使用道具 举报

网站地图|页面地图|文字地图|Archiver|手机版|小黑屋|找资源 |网站地图

GMT+8, 2024-11-26 23:34

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表