-1

私のDB2クエリを以下のように考えてください。

Select something from some tables,
(select something from some tables where bhla=bhla
Unionall
select something from some tables where bhla=bhla
union
select something from some tables where bhla=bhla) x 
where bhla=bhla

のように見えます

select x.something, y.somethingelse from table y,
(select something from some tables where bhla=bhla
    Unionall
    select something from some tables where bhla=bhla
    union
    select something from some tables where bhla=bhla) x 
where bhla=bhla

私のクエリは、上記のクエリを最適化することです(クエリのより良い使用方法)。インデックスとその使用方法に関するいくつかの入力を提供してください。上記のクエリを最適化する必要があるので、いくつかの提案を注いでください。

以下のwhere句を再コーディングするためにhwを提案できますか

どこ

(ID.EXCH_RT <> 0.000000 AND ID.EXCH_RT IS NOT NULL)  
AND I.ACT_LOC_TS BETWEEN ( :Param_290_From_Date CONCAT ' 00:00:00.00000')  AND ( :Param_300_To_Date CONCAT ' 23:59:59.99999') 
4

1 に答える 1

3

提供された情報で最適化することはできません。

通常、人々は、十分に具体的でない質問をするときに、質問をする方法を参照されます。ただし、この特定のケースが多く見られます。明確に定義されていないSQLクエリを最適化するための支援を求めています。そこで、ここで何が悪いのかをもっと詳しく説明したいと思いました。

なぜこれを最適化できないのですか?

  1. 私たちはその仕事を知りません。 最適化は、コードの一部ではなく、タスクに対して行うことです。あなたの目標は、タスクを可能な限り効率的に実行することです。あなたが投稿したコードは、それを行うための最良の方法である場合とそうでない場合があります。コードしかない場合、コードの目的がわからない場合は、コードの適切性を評価する方法がありません。

  2. テーブルの構造はわかりません。SQLの最適化は、問題のテーブルの構造に大きく依存します。どの列が関係し、どのデータ型が関係していますか?テーブルは互いにどのように関連していますか?この場合、一部のクエリは「一部のテーブル」に作用するため、関係するテーブルの数すらわかりません。

  3. データがわかりません。各テーブルの大きさはどれくらいですか?以下のクエリ例を考えてみましょう。最適化されていますか?答えは、すべてがデータに依存しているということです。table1が小さくてtable2大きい場合は、クエリを最適化するのに適した方法です。ただし、table1巨大でtable2小さい場合、それは非常に貧弱なクエリ設計であり、多くの時間を浪費します。データについて何も知らずに最良の設計を伝える方法はありません。

  4. 使用しているデータベースによって異なります(WarrenTに感謝)。この場合、DB2を指定しました。これは、「SQL」とだけ記載されている多くの質問と比較して、良いスタートです。ただし、使用しているプラ​​ットフォームとバージョンを知っておくと便利です。これにより、使用可能な機能に大きな違いが生じます。

クエリの例:

with complicated as (
    select id, 
        char(foo) || case when bar = 1234 then 'a' else 'c' end || 'baz'
             as complicated_field
        from table1
)
select * from table2
    join complicated on 
        complicated.id = table2.id and
        complicated.complicated_field = table2.some_field

これがお役に立てば幸いです。より多くの情報を提供していただければ、さらにサポートさせていただきます。

于 2012-11-22T11:03:07.193 に答える