2012-03-29 7 views
1

次のようなSQLクエリをスピードアップする可能性はありますか?joinupなどのスピードアップSQLクエリ

SELECT.... 
FROM A, B, C 
WHERE 
A.a = B.a AND 
B.b like '%'+C.a+'%' 
+0

A、B、Cがそれらの間に関連する場合は、内部結合を使用することをお勧めします。 –

+0

@MassimilianoPelusoこれはすでに内部結合です。これは最も望ましい構文ではありませんが、これは外部結合とは何でしょうか? –

+0

B.bとC.aのデータの例をいくつか表示できますか?また、A.a、B.a、B.bの索引もありますか?どの部分が遅いですか?あなたは実行計画を見ましたか? –

答えて

1
  • 'のような' 避けるようにしてください。

  • User Inner Join。

  • は、(不注意に参加クロスにつながることがはるかに少ない可能性があるため)私はむしろ、この構文を参照してくださいだろうが表AAとBaの

    SELECT ... 
    FROM A INNER JOIN B 
    ON A.a = B.a 
    INNER JOIN C 
    ON B.b LIKE '%'+C.a+'%' 
    
+0

なぜ 'B.a = C.a'ですか?私はあなたが大幅にこのクエリのセマンティクスを変更したと思う... –

+1

B.a = C.a?これは間違っています! –

1

に索引を作成します。

SELECT A.a, B.a, B.b, C.a 
    FROM A 
    INNER JOIN B 
    ON A.a = B.a 
    INNER JOIN C 
    ON B.b LIKE '%' + C.a + '%'; 

このクエリの高価な部分がLIKE操作の場合、この特定のパターンは毎回スキャンする必要があるため、実際にはあまり実行できません。 B.bとC.aのデータの例をいくつか表示できますか?また、A.a、B.a、B.bの索引もありますか?

関連する問題