首页 / 面试 / 当面试官问你mysql优化时..
当面试官问你mysql优化时..
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了当面试官问你mysql优化时..,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2164字,纯文字阅读大概需要4分钟。
内容图文
用like模糊查询不要用 ‘%’ 开头
数据库引擎会放弃索引进行全表扫描,如果不是必要,尽量别这么干
select id from user where name like '%codeMan%' //×
不要动不动就select *
如果你要的只是用户名,为啥你要用*呢,不要返回用不到的任何字段,万一用户的属性有几十行,你只是想要个用户名,何必呢
select * from user // ×
select user_name from user // √
别动不动就全表扫描
考虑在where和order by涉及的列加索引
不要在where对字段进行null判断
数据库引擎会放弃索引进行全表扫描,如果不是必要,尽量别这么干
换句话说,你可以用0来代替null
不要在where子句用!或者>、<操作符
数据库引擎会放弃索引进行全表扫描
不要在where里面写字段表达式
数据库引擎会放弃索引进行全表扫描
select id from user where money / 10 = 10
你不能这样写么?
select id from user where money = 10 * 10
都给我弄到 “ = ” 右边去
不要在where子句用函数操作
select id form user where substring(user_name,1,4)='code' //×
给我这样写
select id from user where user_name like 'code%'
不要用in和not in
数据库引擎会放弃索引进行全表扫描,如果是连续数值,你可以用between;如果是子查询,你可以用exists,很多时候用exists代替in是一个好选择
不要在where子句使用or
数据库引擎会放弃索引进行全表扫描
select id from user where money = 50 or money = 100 //×
给我这样写
select id from user where money = 50 union all select id from user where money = 100
如果索引是复合索引,必须使用该索引中的第一个字段作为条件
这样才能保证系统使用该索引,否则该索引将不会被使用,并且应尽可能的让字段顺序与索引顺序相一致
索引的正确建立
数据量小的表不需要建立索引
不经常用的列不需要加索引
对于重复多的数据,不要去建索引。
SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL查询可能不会去利用索引,比如表中有个字段sex,只有男和女,有必要去建索引吗?没有,这样反而适得其反。
索引是不是越多约好?
数据变更需要维护索引,因此更多的索引意味着更多的维护成本。
更多的索引意味着更多的存储空间。
索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率, 因为 insert 或 update 时有可能会重建索引
能用数字型字段表示尽量用数字型字段
尽量用varchar代替char
varchar是变长字段,可以节省存储空间,搜索效率高
关于游标
尽量不要使用游标,效率较差
ps:
关于索引的深入,可以深入浅出看看这两篇文章,都是转载自极客的一位老师写的,觉得写的很好~
索引1
索引2
内容总结
以上是互联网集市为您收集整理的当面试官问你mysql优化时..全部内容,希望文章能够帮你解决当面试官问你mysql优化时..所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。