2

ビューとテーブル値関数があり、それらの間で内部結合を行います。結合する必要がある両側から数百万のレコードがあります。

私は結合を最適化する方法をたくさん読みました(最も一般的な答えはインデックスを使用することですが、私のビューはインデックス付きビューにすることはできません)が、ビューと関数の間の結合を正しい方法で行う方法をまだ見つけていませんと最適化されています。

編集:

問題が実際に内部結合であることを示すために、クエリごとに「SELECT COUNT(*)」を作成しました。

  1. 表示 - 0 秒
  2. 機能 - 18 秒
  3. 関数の内部結合ビュー - 42 秒
4

1 に答える 1

0

別の観点から見てみましょう。これほど膨大な量のデータを結合する必要があるでしょうか。私は同様の問題を抱えており、これが私の状況と解決策です:

  1. 私の場合、何百万ものレコードすべてに必要はありませんでした-特定のフィルタリングされたデータだけです
  2. その巨大なテーブルから他のテーブルへの挿入\更新\削除のトリガーを作成しました-それらは必要なデータを追跡することを目的としていました
  3. これで、その特定の (たとえば、フィルター処理された) データに対して高速結合を行うことができます

このアプローチには、独自の長所と短所があります。主な不便 - DB 構造を再構築\レビューする必要があります。その方法は、すべての場合に適していない可能性があります

とにかく-これは私の特定の問題の解決策であり、それでも問題なく動作します.少なくとも10倍のパフォーマンスを向上させました.

于 2012-06-06T12:29:37.607 に答える