网站建设吉金手指排名13,游戏在线玩,建网站-湛江市,做网站完整过程文章目录 前言什么时候需要#xff08;不需要#xff09;)使用索引#xff1f;有哪些优化索引的方法前缀索引优化索引覆盖优化索引失效场景 总结 前言
今天来讲一讲 MySQL 索引的高频面试题。主要是针对前一篇文章 MySQL索引入门#xff08;一文搞定#xff09;进行查漏补… 文章目录 前言什么时候需要不需要)使用索引有哪些优化索引的方法前缀索引优化索引覆盖优化索引失效场景 总结 前言
今天来讲一讲 MySQL 索引的高频面试题。主要是针对前一篇文章 MySQL索引入门一文搞定进行查漏补缺建议大家看完前一篇再看这一篇。 什么时候需要不需要)使用索引
我们先来看看索引的优缺点吧。
优点可以快速查询的效率查询是在增删改查中最经常使用。
缺点创建索引是要用到物理空间的。其次维护索引当数据库进行增删改的时候索引也要动态的进行变化。这样子的话过多的索引会影响到数据库的增删改性能。
从优缺点我们来切入什么需要使用索引什么时候不需要索引
什么时候需要使用索引
当字段经常出现在 where 当做条件中我们可以考虑根据字段添加索引。当字段经常出现在 order By 和 Group By 时我们可以考虑根据字段添加索引。当字段频繁的查询而少更新时我们可以考虑根据字段添加索引。
什么时候不需要使用索引 反之将字段频繁的更新时不需要使用索引因为索引的意义就是加速查询既然用不上就不需要创建了。 当数据量少时不用因为查询性能慢而烦恼时就不需要使用索引。 当字段经常设计计算、函数等操作时不需要使用索引因为这会造成索引失效。 当有 whereorder by group by 等关键词使用不到的字段不需要使用索引因为索引的价值是快速定位这样子的话提现不出价值而且索引会占用物理空间。 当有字段存储了大量的重复数据时不需要创建索引比如性别只有男/女两种值这时候的索引是起不到作用的。因为MySQL 有个优化器会在执行前将SQL进行优化如果有太多重复的数据优化器默认是不会使用索引的。
有哪些优化索引的方法
前缀索引优化
前缀索引优化就是当类型为字符串比如varchar的字段该字段过长时我们可以使用前缀索引就是将该字段的前几个字符作为索引。
这样子既可以节省空间又可以起到索引优化查询的性能。
当然这种也有缺点。
order by 无法使用前缀索引前缀索引无法起到索引覆盖优化。
索引覆盖优化
索引覆盖优化一般是使用联合索引就是B树的叶子结点是包含索引key和数据data的。当使用联合索引时 如果联合索引中的值包含了我们需要查询的值那么就不用进行回表查询了。回表查询就是根据这次查询到的索引值再进行一次查询。
比如学生表我们要查询出studentNamestudentPhone其中card身份证卡号是唯一值我们创建联合索引card、studentName、studentPhone。然后我们使用SQL语句进行查询
select card,studentName, studentPhone from student where card 445122335464654654463
这样子就是索引覆盖优化拉。
索引失效场景
就不详细解释了大家感兴趣底层原理可以阅读 “小林coding”的网站。
当like关键字进行左模糊%xx查询和左右模糊%xx%查询时会失效。因为索引是整个值进行左模糊的话无法匹配出来。当索引字段进行计算函数类型转化时会出现索引失效。当联合索引不符合最左匹配原则时会出现索引失效。where 条件字段中如果 OR 前字段是索引列后字段不是会索引失效。 总结
总的来说我们只要符合索引的优缺点就可以知道索引该如何使用拉。优点快速查询缺点浪费空间影响数据更新性能。
最后建议大家都可以去读一读 小林coding网站的索引篇知道底层原理知识才更牢固。 有启发点个赞
好文章不要错过最近給大家分享的文章
MySQL的基础知识
1.MySQL的基础架构 2.SQL语句的执行流程 3.MySQL 的存储引擎
MySQL 索引
1.MySQL索引入门一文搞定
预计下篇分享MySQL 事务基础知识
本篇参考小林coding JavaGuide 我是小辉正在进行 Java 实习的 24 届应届毕业生。欢迎关注持续分享包括但不限于技术文章。全网同名…