2017-08-20 17 views
-5

これを書くにはより良い方法がありますか?なぜこのクエリに時間がかかりますか?

select Date, NeName, KPINAME, SUB_TYPE1, KPI 
from ggsn_kpi_2017 
where date 
    in ('2017-08-19', '2017-08-18', '2017-08-17', '2017-08-16', '2017-08-15', 
    '2017-08-14', '2017-08-13') 
    and KPINAME in('SM_SUCC_SESS_ACT_GGSN', 'SM_FAIL_SESS_ACT_GGSN', 'SM_SUCC_SESS_ACT_P_GW', 'SM_FAIL_SESS_ACT_P_GW', 
    'SM_SUCC_SESS_ACT_SAE_GW', 'SM_FAIL_SESS_ACT_SAE_GW', 
    'SM_DOWNLINK_BYTES_M2M', 'SM_UPLINK_BYTES_M2M') 

    group by Date, NeName, KPINAME 

    union 

    select Date, NeName, KPINAME, SUB_TYPE1, KPI 
    from ggsn_kpi_2016 
    where date in ('2017-08-19', '2017-08-18', '2017-08-17', '2017-08-16', 
    '2017-08-15', '2017-08-14', '2017-08-13') 
    and KPINAME in('SM_SUCC_SESS_ACT_GGSN', 'SM_FAIL_SESS_ACT_GGSN', 'SM_SUCC_SESS_ACT_P_GW', 
    'SM_FAIL_SESS_ACT_P_GW', 'SM_SUCC_SESS_ACT_SAE_GW', 
    'SM_FAIL_SESS_ACT_SAE_GW', 'SM_DOWNLINK_BYTES_M2M', 'SM_UPLINK_BYTES_M2M') 
    group by Date, NeName, KPINAME; 
+1

質問を編集し、適切に書式を設定し、使用しているデータベースのタグとそのクエリプラン、テーブル定義、インデックスなどを追加してください。誰もそれについて何も言えません。 –

+1

あなたの問題の詳細を説明する必要があります。この質問は、StackOverflowの質問としては有効ではありません。質問を投稿する方法のガイドラインはここにあります:https://stackoverflow.com/help/how-to-ask – Reeza

+2

あなたは 'SELECT'に' SUB_TYPE1、KPI 'を持っていますが、それらは' GROUP BY'にはありません。あなたの質問は意味をなさない。 –

答えて

0

このクエリでは、明らかにパフォーマンスの反パターンがあります。あなたはdateDATETIMETIMESTAMP、OR DATEコラムです

where date in ('2017-08-19', '2017-08-18', '2017-08-17', '2017-08-16', 
'2017-08-15', '2017-08-14', '2017-08-13') 

場合は持っている、そして、両方のテーブルのための(date, KPINAME)にインデックスを作成

where date >= '2017-08-13' 
    and date < '2017-08-20' 

あるいは

where date >= '2017-08-13' 
    and date < '2017-08-13' + INTERVAL 1 WEEK 

にそれを変更します。これにより、WHERE句が少なくとも部分的にsargableになります。

また、GROUP BYを誤って使用しているようです。それはMAX()AVG()のような集計関数になります。 ORDER BYを意味しますか?

+0

さらに、2017年の日に 'ggsn_kpi_2016'をチェックしています。これは間違っているようだ? –

関連する問題