搜索泥称 发表于 2018-10-5 10:48:38

mysql使用规范-SQL设计

  (1)使用prepared statement,可以提升性能并避免SQL注入。
  (2)使用IN代替OR。SQL语句中IN包含的值不应过多,应少于1000个。
  (3)禁止隐式转换。数值类型禁止加引号;字符串类型必须加引号。
  (4)避免使用JOIN和子查询。必要时推荐用JOIN代替子查询。
  (5)禁止在MySQL中进行数学运算和函数运算。
  (6)减少与数据库交互次数,尽量采用批量SQL语句。
  (7)拆分复杂SQL为多个小SQL,避免大事务。
  (8)获取大量数据时,建议分批次获取数据,每次获取数据少于2000条,结果集应小于1M。
  (9)使用UNION ALL代替UNION。
  (10)统计行数使用COUNT(*)。
  (11)SELECT只获取必要的字段,禁止使用SELECT *。
  (12)SQL中避免出现now()、rand()、sysdate()、current_user()等不确定结果的函数。
  13)INSERT语句必须指定字段列表,禁止使用 INSERT INTO TABLE()。
  (14)禁止单条SQL语句同时更新多个表。
  (15)禁止使用存储过程、触发器、视图、自定义函数等。
  (16)建议使用合理的分页方式以提高分页效率。
  (17)禁止在从库上执行后台管理和统计类功能的QUERY,必要时申请统计类从库。
  (18)程序应有捕获SQL异常的处理机制,必要时通过rollback显式回滚。
  (19)重要SQL必须被索引:update、delete的where条件列、order by、group by、distinct字段、多表join字段。
  (20)禁止使用%前导查询,例如:like “%abc”,无法利用到索引。
  (21)禁止使用负向查询,例如 not in、!=、not like。
  (22)使用EXPLAIN判断SQL语句是否合理使用索引,尽量避免extra列出现:Using File Sort、Using Temporary。
  (23)禁止使用order by rand()。
  (24)禁止使用REPLACE INTO和INSERT ON DUPLICATE KEY UPDATE的语句类型,除非业务场景特殊且DBA评估通过。

页: [1]
查看完整版本: mysql使用规范-SQL设计