面试之SQL优化怎么回答?


想必小伙伴们面试度时候,都被问过SQL优化吧?然鹅实际上工作中,这个点大部分人接触的很少,加上面试本来就有点紧张,导致很多人,只能想到一点点,甚至一脸懵圈,那么面试度时候遇到这个问题应该怎么回答呢?

下面我就来说说我的看法:

  (1)最重要的是尽量避免全表扫描”

  (2)适当的创建索引,考虑在 where 及 order by 涉及的列上建立索引(把所建的索引所用列名,用在where语句中,并尽量在条件的最右边,索引相关知识:https://www.jianshu.com/p/f588c41f1cb5

  (3)尽量避免在 where 子句中对字段进行 null 值判断、使用!=或<>操作符、使用 or 来连接条件、对字段进行函数操作等

  (4)in 和 not in 也要慎用,否则可能会导致全表扫描

  (5)很多时候用 exists 代替 in 是一个好的选择

  (6)尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。

  (7)尽可能的使用 varchar 代替 char ,因为首先变长字段存储空间小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些。  

  (8)把条件最小的写在最右边,如果id=?写在最右边

  (9)尽量少写子查询,用join语句代替,少写in,like,or


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM