MySQL开发规范禁用列表

1 SELECT 严禁select *查询,必须明确查询字段 禁用 如果表列发生变化,会使结果集变化
2 严禁SQL关联表超过3张,关联字段数据类型必须一致,且能利用索引 禁用 超过3张表进行拆分
3 使用子查询,将子查询改写为表连接 禁用  
4 使用or,or改为union all 或者in 禁用  
5 使用select … for update 禁用 数据行锁,容易造成死锁
6 使用开关条件,如1=1,1=0,1>2 禁用 会导致sql解析器生成错误执行计划,并且会引起sql注入
7 严禁SQL中进行计算或嵌套判断 禁用  
8 WHERE条件 WHERE子句的表字段上使用表达式或函数 禁用 当WHERE子句的表字段使用函数后,将会导致该字段无法使用上索引,建议在字段的值域上加函数、计算或转换的表达式。
9 传入变量类型与查询条件中字段类型不匹配 禁用  
10 单表数据量大,禁止WHERE子句中使用全模糊、左模糊查询:where xx like '%xx' 禁用 这个列的索引不被使用
11 不带通配符的like语句 禁用 不带通配符like可能是错误
12 不带where的select、update、delete 禁用 不带where条件存在风险
13 严禁负向查询条件(!=、<>、not) 禁用  
14 in,in操作能避免就避免,避免不了评估in集合元素量,不超过100 禁用 元素量过多,效率低下
15 ORDER BY\GROUP BY  order by子句排序方式不同 禁用 排序方式不同将不会使用索引,要么按asc、要么按desc
16 在不同表上使用group by 、order by 禁用 会使用临时表、文件排序,导致性能问题
17 UPDATE/DELETE UPDATE/DELETE使用LIMIT子句 禁用 使用LIMIT子句,容易导致出现死锁和锁资源争用,还有导致主备数据不一致的风险
18
UPDATE/DELETE 禁用 update、delete操作必须基于高选择性索引、主键。
19 大字段类型 大字段类型 tinytext、text、mediumtext、longtext、tinyblob、blob、 禁用  
20 DDL 禁止脚本中drop表、字段类操作 禁用  
21 INSERT 不显示指定列 禁用 如果表列发生变化,会产生错误
22 LIMIT limit子句不带order by  禁用 不带order by会导致不确定结果
禁止分页偏移量过大,limit 10000,10 禁用 效率低下
23 其他 函数、触发器、存储过程、视图 禁用  

猜你喜欢

转载自blog.csdn.net/weberhuangxingbo/article/details/85060032
今日推荐