SQL 语句优化

  1. SQL语句尽可能简单
  2. 事务简单,执行时间不能太长
  3. 不使用触发器、函数、存储过程
  4. 分库分表
  5. 不使用数学运算
  6. 不使用select *
  7. 将 OR 改成 IN
  8. in里面的数字个数控制在1000以内
  9. 使用union all 替代union
  10. 不使用大表的join
  11. 使用group by分组,自动排序
  12. 不要一次更新太多数据
  13. 注意SQL分析工具explain查看执行计划,分析一条sql语句用explain+sql
  14. SQL关键字全部是大写,每个词只允许有一个空格
  15. SQL语句不可以出现隐式转换,(当join两个表时,两个同名字段的字符类型不同,容器出现隐式转换)
  16. in条件里数据量要少,学会使用exist替代in
  17. 尽量不用not in
  18. 禁止使用前缀是%的like
  19. 分页使用limit
  20. 使用预编译语句
  21. 禁止使用order by rand()
  22. 禁止单条SQL语句同时更新多个表
  23. 避免或减少临时表
  24. where子句中的数据扫描别跨越表的30%,
  25. where子句中同一个表的不同字段组合建议小于等于5组,否则考虑业务逻辑或分表
  26. 不使用is null或is not null
  27. 值域比较多的表字段放在前面
  28. 表字段组合中出现比较多的表字段放在前面
  29. 表字段不能有表达式或函数
  30. 用where替换having
  31. 对同一表的order by和group by操作分别小于3组
  32. 使用主键进行update和delete
  33. 减少或避免排序,group by中不需要排序,增加order by null
  34. 语句中不使用rand()和now()
  35. insert语句使用batch提交的个数不超过500
  36. 使用合理的SQL语句减少与数据库的交互次数
  37. 减少使用视图
  38. update和delete语句中不使用limit
  39. InnoDB表避免使用count(*)
  40. Oracle和MySQL的一些差异
  41. 自动增长的数据类型处理:MySQL有auto_increment,Oracle没有
  42. 单引号的处理:MySQL可以用单双,Oracle只能用单
  43. 翻页的SQL语句的处理:MySQL用limit,Oracle用rownum
  44. 日期字段的处理:MySQL有date、datetime、timestamp、time、year;Oracle只有Date
  45. MySQL找到离当前时间7天用date_field_name>subdate((now(),interval 7 Day))
  46. Oracle:date_field_name>sysdate -7 空字符的处理:MySQL的非空字段也有空的内容,Oracle不能
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值