天天看点

冗余数据JOIN导致的慢SQL优化一例

一个这样的查询,每个表都只有几千条数据,但是查询非常慢,几十秒不出结果。

从语义来看,这条sql是在经过几个join后取其中一个表的两个字段的唯一值。

但是每一次关联,都可能产生冗余的值,所以导致了结果集越来越庞大。

修改建议,每一次join都输出唯一值,减少冗余。

修改后几十毫秒可以输出结果。

以下查询,每次join都产生大量的冗余数据,越到后面的join,冗余越多,导致的查询非常漫长。

修改如下,可以很快的得到结果

这种sql,如果要改内核的话,可以对统计信息进行分析(每个字段都有n_distinct),并对其进行query rewrite,得到同样的结果。

祝大家玩得开心,欢迎随时来 阿里云促膝长谈业务需求 ,恭候光临。

阿里云的小伙伴们加油,努力 做好内核与服务,打造最贴地气的云数据库 。