sql优化改写

zcn12612 天前
sql优化改写
先过滤后关联的优化经验分享最近遇到一个问题,发现开发人员比较喜欢单一的将表放一块一起做关联。如果有了先过滤后关联的思维,大部分语句的性能会获得提升。 以下是真实项目简化而来的例子
zcn12618 天前
sql优化改写
union 和 union all的区别UNION对两个结果集进行并集操作,不包括重复行,相当于使用distinct关键字。而UNION ALL则对两个结果集进行并集操作,包括重复行,即所有结果全部显示,不管是否重复。 UNION操作会去除重复的记录,只返回唯一的记录。而UNION ALL操作则不会去除重复记录,会直接连接所有的值。 UNION操作会按照字段的顺序进行排序,而UNION ALL操作则不会对结果进行排序。因此我们在项目中能用union all的就使用union all,避免union排序去重增加性能。
zcn1262 个月前
sql优化改写
like关联改写instr:字符串查找函数substr: 字符串截取函数LIKE:模糊匹配 其三者之间的转换这里问题在于驱动表为t2,index join次数100万次,前面说过与substr和instr可以等价转换,这里想要转换驱动表,那么就需要用substr。
zcn1262 个月前
sql优化改写
OR关联改写经验or是一种逻辑运算,or条件成立的情况如下: 条件1 条件2 or运算 真 真 真 真 假 真 假 真 真 假 假 假 or运算相当于只要满足一个条件为真,它就返回真。在运算中与union all计算有相似之处 集合1 集合2 union all结果 有数据 有数据 有数据 有数据 无数据 有数据 无数据 有数据 有数据 无数据 无数据 无数据 只要一个集合中有数据,union all就有数据。 因此在优化中经常用此作为改写替换的方法。
zcn1264 个月前
sql优化改写
标量子查询优化(二)Left join:返回包括左表的所有记录和右表满足关联关系的记录,不满足的记录置为空。 标量子查询:子查询返回的是单一值的标量。 Left join和标量子查询关联:left join中右表的关联列如果是唯一值,那么在实际的语句中可以改写成标量子查询。
我是有底线的