SQL优化十八条


  按键伤人      53   
  2021-01-18      数据库      

  1. 对查询进行优化,应尽量避免全表扫描,首先应考虑在WHERE及ORDER BY涉及的列上建立索引。

  2. 应尽量避免在where子句中对字段进行NULL值判断,建表时NULL是默认值,但大多数时应该使用NOT NULL。

  3. 尽量避免在where子句中使用!=或<>操作符。

  4. 应尽量避免在where子句中使用or来连接条件,否则将导致引擎放弃使用索引进行全表扫描。

  5. IN和NOT IN也要慎用,否则会导致全表扫描,可以使用between就尽量使用between。

  6. 在使用like需要注意不要使用 like ‘%abc%’或者like '%abc',可使用like 'abc%'。

  7. 如果在where子句中使用参数,也会导致全表扫描。

  8. 很多情况下可以使用EXISTS代替IN是一个好的选择。

  9. 索引可以提高相应的select的效率,但同时也降低了INSERT及UPDATE的效率,一个表的索引数最好不要超过6个。

  10. 应尽量可能的避免更新clustered索引数据列,一旦更新数据列,会耗费相当大的资源。

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

  12. 应尽量使用varchar,nvarchar代替char,nchar。字段长度可变,可以节省存储空间。

  13. 在语句查询时,不要使用*。

  14. 尽量不要向客户端返回大数据

  15. 近可能使用表别名,把别名前缀于每个字段上,可减少解析时间。

  16. 使用临时表。

  17. 某些查询SQL中加上nolock,读和写相互阻塞,为了提高并发性能。但是会可能读到未提交的脏数据。使用nolock有3条原则:

  18. 查询的结果用于“插,删,改”的不能加nolock

  19. 查询的表属于频繁发生页分裂的,慎用nolock

  20. 能够用临时表提高性能的,不要用nolock

  21. 不要使用超过5个以上的表连接,少用子查询,视图嵌套不要过深,一般的视图嵌套不要超过2个

作者:小楼一夜雨

ps:以上是SQL优化十八条全部内容,希望文章能够帮你解决SQL优化十八条所遇到的游戏开发问题。
本文收录在 游戏编程 🕹️ - 学习数据库专题,分享走一走~

 优化   

猜你喜欢 全系列


您可以在登录后,发表评论