0

次の SQL コード (select ステートメントの一部) を取得しました。

Case
      When HilfsTab2.Gruppe = 'HST' And Basis.Breite_FLA = Basis.Breite Then 0
      Else Case When HilfsTab2.Gruppe = 'SA' Or HilfsTab2.Gruppe = 'HO / TB' Or
        HilfsTab2.Gruppe = 'PR' Then 0 Else Case
          When HilfsTab2.Gruppe Is Null Then -1 Else 1 End End
    End As IsHST_Fluegel

今、これを数百万のエントリのテーブルで実行します。私の理解では、SQL は最初のケースをすべての行に対してチェックし、次にすべてのエントリに対して 2 番目のケースをチェックします。これには何年もかかります。今、私は考えていましたが、これを行うためのより簡単な方法が必要です。

基本的にエントリに応じて-1、0、または1を出力するストアドプロシージャ/カスタム関数を考えていました。

前もって感謝します

4

2 に答える 2

0

ケースは次のように単純化できます。

Case
      When HilfsTab2.Gruppe = 'HST' And Basis.Breite_FLA = Basis.Breite Then 0
      When HilfsTab2.Gruppe in ('SA', 'HO / TB', 'PR') Then 0
      When HilfsTab2.Gruppe Is Null Then -1
      Else 1
End As IsHST_Fluegel

しかし、これはあなたのクエリをスピードアップしません。何百万もの行を選択したい場合は、とにかく時間がかかります。

于 2013-09-24T11:38:06.363 に答える