0

私はネストクエリを持っています:

SELECT PIXEL_X as 'X_Coord', PIXEL_Y as 'Y_Coord', 
CONVERTWATTS2DBM_udf(SUM(L2_VALUE)/SUM(L3_VALUE)) as 'Pixel_Value' 
   FROM table  
   WHERE  
      ('GSM 850/900' like CONCAT('%',FILTER2,'/%') OR 
       'GSM 850/900' like CONCAT('%/',FILTER2,'%') ) 
GROUP BY X_Coord, Y_Coord;

長い時間がかかりますが、彼らのパフォーマンスを改善するのを手伝ってくれませんか?

ありがとう

4

1 に答える 1

0

最適化する簡単な方法は次のとおりです。

  • データベースへのアクセスに使用する言語でフィルター変数を自分で作成します。
  • 「GMS 850/900」のオプションごとに 1 つのクエリを設定し、次のように UNION を使用してそれらを結合します。

    SELECT PIXEL_X as 'X_Coord', PIXEL_Y as 'Y_Coord', 
    CONVERTWATTS2DBM_udf(SUM(L2_VALUE)/SUM(L3_VALUE)) as 'Pixel_Value' 
    FROM table  WHERE  
    'GSM 850/900' like '%YOURVALUE1%'
    UNION
    SELECT PIXEL_X as 'X_Coord', PIXEL_Y as 'Y_Coord', 
    CONVERTWATTS2DBM_udf(SUM(L2_VALUE)/SUM(L3_VALUE)) as 'Pixel_Value' 
    FROM table  WHERE  
    'GSM 850/900' like '%YOURVALUE2%'
    

これにより、クエリが高速化されます。

さらに、事前にその場で生成する値を生成すると、クエリが大幅に高速化されます。列を作成し、ON WRITE トリガーで CONVERTWATTS2DBM_udf を生成できます。これにより、すべての行だけでなく、クエリ自体の実行ごとにもこの関数を実行する必要がなくなります。

最後に、Pixel_X、Pixel_Y、および新しく作成した列に対する複合インデックスを使用すると、クエリをさらに高速化できます。

于 2012-10-26T06:58:15.620 に答える