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 | 其他 | 函数、触发器、存储过程、视图 | 禁用 |
MySQL开发规范禁用列表
最新推荐文章于 2023-03-03 15:19:12 发布