面试之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

posted @ 2020-06-12 17:58  Eliphaz  阅读(1326)  评论(0编辑  收藏  举报