1. 先捋清楚业务过滤条件,然后查看脚本中有没有做相关的过滤,同时不同的业务属性,会产生不同的结果,属性对应的结果需要捋清楚
业务属性很重要,哪些业务是要包含到,哪些是不被包含到的
2. 看懂数据库脚本
捋清脚本人的思路,先自己脑子里大概过一下,如果自己写,应该是怎么写
3. 数据库join中容易出错的地方
left join xx on yyyy and zzzz
left join xx on yyyy where zzzz
这两个是有区别的,上面是先把xx中关于zzzz的过滤出来,下面是把join的结果中关于zzzz的过滤出来。
union 和 union all 的区别,两者造成的数据是有差别的
Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
Union All:对两个结果集进行并集操作,包括重复行,不进行排序
4. 局部看不明白的sql, 抠出来,然后用数据来验证不明白的地方,然后用数据来验证不明白的地方, 看是否符合预期
5. 复杂的查询,可以修改select 后面的内容改为*,然后以这样的结果进行验证(这样的数据会更直观),这种方式针对有group by的效果比较明显,去掉group by , 改成select * , 有时候能很快发现问题
切记: 拆散的sql,记得最后在合起来再看下结果
6. 考虑效率问题
先缩小数据范围,然后进行关联
通过explain来检查执行的情况
7. 类似业务的sql, 如果发现这边有问题,务必要检查另外的地方有没有一并修正
8. 持续更新sql技能,学会写sql及复杂业务数据的熟练构造