-1

こんにちは、よろしくお願いします。where句なしでクエリを実行すると、約8600行を返すのに0秒強かかるという見解があります。ただし、次のような where 句を使用してクエリを実行すると、次のようになります。

SELECT * FROM myView WHERE myID = 123

123 の代わりにどの定数を使用するかによって、クエリの実行時間が大幅に変わります。

さて、この場合の「かなり」とは、0 秒強と 3 ~ 4 秒の差を意味します。しかし、ビューは特定のタスクに対して頻繁かつ繰り返し呼び出され、3 秒が 30 秒以上になります。

ビュー自体のコードを提供することはできませんが、確認できることは次のとおりです。

  1. このビューは、6 つの標準テーブル (特別な特性はありません) の結合で構成されています。

  2. テーブル B とリンクするテーブル A のレコードが常に存在するとは限らないため、結果に null 列が作成されますが、そのようなインスタンスが一貫してクエリ時間の延長または短縮につながるわけではないことを確認しました。

  3. ビュー自体には、標準Selectの 、From、およびLeft Outer Join句以外の句はありません。

  4. 特定の ID では常にクエリ時間が長くなり、他の ID では常にクエリ時間が短くなります。

  5. 最適ではないキャッシュされた実行計画があった可能性を考慮して、クエリの合間にビューを削除して作成しました。

これらの既知の変数では、考えられる原因を 2 つまたは 3 つに減らすのに十分でない場合でも、理解を深めるために、理論上の問題がこの問題を引き起こしている可能性があることを知りたいと思います。

再度、感謝します、

ProtoNoob

4

1 に答える 1