首页 / MYSQL / MySQL优化——索引
MySQL优化——索引
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL优化——索引,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3103字,纯文字阅读大概需要5分钟。
内容图文
![MySQL优化——索引](/upload/InfoBanner/zyjiaocheng/492/fa9e2daccba64f829d135edb0de8337d.jpg)
内容来自:https://yq.aliyun.com/articles/214494?utm_content=m_31338
对此我们来详细分析下(也就是大家在面试时需要说的):
场景一,数据表规模不大,就几千行,即使不建索引,查询语句的返回时间也不长,这时建索引的意义就不大。当然,若就几千行,索引所占的空间也不多,所以这种情况下,顶多属于“性价比”不高。
场景二,某个商品表里有几百万条商品信息,同时每天会在一个时间点,往其中更新大概十万条左右的商品信息,现在用where语句查询特定商品时(比如wherename=‘XXX’)速度很慢。为了提升查询效率可以建索引,但当每天更新数据时,又会重建索引,这是要耗费时间的。这时就需要综合考虑,甚至可以在更新前删除索引,更新后再重建。
场景三,从上图中可以看到,因为在数据表里ID值都不相同,所以索引能发挥出比较大的作用。相反,如果某个字段重复率很高,如性别字段,或者某个字段大多数值是空(null),那么不建议对该字段建索引。
请大家记住,一定是有业务需求了才会建索引。比如在一个商品表里,我们经常要根据name做查询,如果没有索引,查询速度会很慢,这时就需要建索引。但在项目开发中,如果不经常根据商品编号查询,那么就没必要对编号建索引。
最后再强调一次,建索引是要付出代价的,没事别乱建着玩,同时在一个表上也不能建太多的索引。
下面说下索引建好了该怎么用?毕竟大家花了不少时间和空间代价建了索引,至少得回本吧?
如果出现一些不好的SQL语句,那么索引就白建了。下面通过一些具体的例子来看索引的正确用法。
①语句一:selectnamefrom商品表。不会用到索引,因为没有where语句。
②语句二:select*from商品表wherename=‘Java书’,会用到索引,如果项目里经常用到name来查询,且商品表的数据量很大,而name值的重复率又不高,那么建议建索引。
③语句三:select*from商品表wherenamelike‘Java%’这是个模糊查询,会用到索引,请大家记住,用like进行模糊查询时,如果第一个就是模糊的匹配符,比如wherenamelike‘%java’,那么在查询时不会走索引。在其他情况下,不论用了多少个%,也不论%的位置,只要不出现在第一个位置,那么都能用到索引。
学生成绩表里有两个字段:姓名和成绩。现在对成绩这个整数类型的字段建索引。
①第一种情况,当数字型字段遇到非等值操作符时,无法用到索引。比如:
selectnamefrom学生成绩表where成绩>95,一旦出现大于符号,就不能用到索引,为了用到索引,我们应该改一下SQL语句里的where从句:where成绩in(96,97,98,99,100)
②第二种情况,如果对索引字段进行了某种左值操作,那么无法用到索引。
能用到索引的写法:selectnamefrom学生成绩表where成绩=60
不能用到索引的写法:selectnamefrom学生成绩表where成绩+40=100
③第三种情况,如果对索引字段进行了函数操作,那么无法用到索引。
比如SQL语句:select*from商品表wheresubstr(name)=‘J’,我们希望查询商品名首字母是J的记录,可一旦针对name使用函数,即使name字段上有索引,也无法用到。
关于索引,当然还有位图索引和复合索引等,如果大家要应聘更高级的岗位(比如有5年经验了),那么就不能止步于此了,但根据我的面试经验,上述关于索引的说辞对工作经验3年以下的候选人是有帮助的。
其实我知道,不少程序员平时用过索引,但不知道怎么说,这很吃亏。对于高级程序员而言,如果你这都说不好,那么你的能力比初级的要高多少?对于初级程序员而言,如果你掌握了,而且能在面试中很好地说,那么你和同等能力的人相比,就很占优势。
MySQL优化——索引
标签:com rom 记录 工作经验 姓名 aliyun 需求 java 面试经验
本文系统来源:http://www.cnblogs.com/fyp7077/p/7594448.html
内容总结
以上是互联网集市为您收集整理的MySQL优化——索引全部内容,希望文章能够帮你解决MySQL优化——索引所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。