暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

肉眼可以识别的差SQL

四海内皆兄弟 2022-05-13
357

    有时候别人问我,你能一眼看出SQL的好坏吗?我不敢说100%能确定,但是能确定的都是100%的不好。那么靠的是什么?根据经验来说符合下面的规则的,通常来说是不好的。

1、没有where 条件

2、Select的列超过50列

3、SQL中存在标量子查询

4、SQL谓词过滤中仅含有!=或<>或or操作符

5、SQL谓词过滤中对字段进行null值判断作为业务逻辑

6、SQL谓词过滤中仅含有notin,not exist

7、SQL谓词过滤中仅含有前后%

8、SQL谓词过滤中=”左边进行函数、算术运算或其他表达式运算。

9、SQL谓词过滤中非唯一查询的场景中无时间限定或分页限定。

10、        SQL谓词过滤中仅有状态、等区别度较低的字段

11、        SQL谓词过滤中时间范围过大或者缺失上下限之一

12、        SQL谓词过滤中范围查询没有分页

13、        SQL谓词过滤中无意义排序

14、        多表关联列非索引列

15、        多表关联,关联列类型转换

16、        多表关联时,select的列只用到其中一个表

17、        多表关联时,select的列只来自多表,但是大部分表只贡献1-2列

18、        多表关联时,谓词中涉及多表的过滤条件,但是这些条件通常只为状态等无效过滤条件

19、        关联表超过5个(MySQL超过3个)

20、        Select没有绑定变量(Oracle)

21、        绑定变量过多超过50个(Oracle)

22、        对CLOB和BLOB进行模糊查询

23、        SQL中出现对log表、tmp表,接口表,历史表进行关联和判断

24、        多表关联笛卡尔积

25、        SQL中出现全角半角,大小写等判断

26、        In 超过100个

27、        子查询超过2个

28、        子查询和父查询存在嵌套

29、        拼接字段作为谓词充当过滤条件

30、        排序计算count

31、        分组维度超过2个

32、        非时间范围的分组sum,count

可能存在一点争议,但是可以说如果都做到禁止以上,那么数据库的负荷绝对很低。

文章转载自四海内皆兄弟,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论