天天看點

備援資料JOIN導緻的慢SQL優化一例

一個這樣的查詢,每個表都隻有幾千條資料,但是查詢非常慢,幾十秒不出結果。

從語義來看,這條sql是在經過幾個join後取其中一個表的兩個字段的唯一值。

但是每一次關聯,都可能産生備援的值,是以導緻了結果集越來越龐大。

修改建議,每一次join都輸出唯一值,減少備援。

修改後幾十毫秒可以輸出結果。

以下查詢,每次join都産生大量的備援資料,越到後面的join,備援越多,導緻的查詢非常漫長。

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

這種sql,如果要改核心的話,可以對統計資訊進行分析(每個字段都有n_distinct),并對其進行query rewrite,得到同樣的結果。

祝大家玩得開心,歡迎随時來 阿裡雲促膝長談業務需求 ,恭候光臨。

阿裡雲的小夥伴們加油,努力 做好核心與服務,打造最貼地氣的雲資料庫 。