一个这样的查询,每个表都只有几千条数据,但是查询非常慢,几十秒不出结果。
从语义来看,这条sql是在经过几个join后取其中一个表的两个字段的唯一值。
但是每一次关联,都可能产生冗余的值,所以导致了结果集越来越庞大。
修改建议,每一次join都输出唯一值,减少冗余。
修改后几十毫秒可以输出结果。
以下查询,每次join都产生大量的冗余数据,越到后面的join,冗余越多,导致的查询非常漫长。
修改如下,可以很快的得到结果
这种sql,如果要改内核的话,可以对统计信息进行分析(每个字段都有n_distinct),并对其进行query rewrite,得到同样的结果。
祝大家玩得开心,欢迎随时来 阿里云促膝长谈业务需求 ,恭候光临。
阿里云的小伙伴们加油,努力 做好内核与服务,打造最贴地气的云数据库 。