私たちは、フィルタ処理後に膨大なデータを持つテーブルからレコードをフェッチする、毎日スケジュールされたストアドプロシージャを持っています。私の質問は、私はテーブル上のビューを作成し、ビューからデータをフェッチする場合、これはより速いプロセスか遅いでしょうか?ビューまたはテーブルからデータを高速に取得できますか?
答えて
標準ビューでは、内部SQLがクエリに展開されるだけで、違いはありません。これは、インラインのテーブル値のユーザ定義関数(「パラメータ付きビュー」と考える)にも適用されます。
ただし、indexed viewにすると、パフォーマンスが向上します。
the same applies with table-valued user defined functions
複数ステートメントのテーブル値関数のインラインテーブル値関数のために本当ではなく、100%真実:ちょうど@AdaTheDevの答えを補完
。機能のこの第二のタイプは
だけ覚えて、それは劇的にあなたのストレージ容量を増加させることを念頭に置いて、それは助けることができる、インデックス表示について最初の1
よりも多くのリソース(メモリ)を使用しますが、負担します、ビューはselectステートメントに過ぎません(インデックス付きビューは異なります)。あなたが持っている場合:
SELECT * FROM TABLE
をそして、それが手順にあるビューで同じものを配置し、やった場合、:
SELECT * FROM VIEW
をプロシージャ内では、これら2つの間に違いは絶対にありません。しかし、事が複雑になって多くのテーブルに参加している場合、実際にどのようにアクセスされているかによって異なります。
たとえば、6つのテーブルにアクセスするビューを作成し、そのうちの3つのテーブルからデータを取り出す必要があるクエリを作成すると、最適化プロセス内で行われる簡略化というプロセスが役立ちます。 3つのテーブルのみを参照するプランが表示されます。しかし、そうではないかもしれません。そうでない場合は、3つの表に対して作成する問合せは、通常は3つ以上の表にアクセスするビューに対して計画よりも高速に実行されます。
ビューのネストを開始し、ビューをコールしたりビューに参加したりすると、パフォーマンスが非常に低下することがあります。
通常、ストアドプロシージャを使用している場合は、テーブルに対して直接クエリを記述することをお勧めします。パフォーマンスが損なわれることはありません。ネストされたビューの問題を回避し、シンプル化を計画するのに役立ちます。
- 1. AjaxはStrutsよりも高速にデータを取得できますか?
- 2. WCF RIA大きなデータを高速に取得する
- 3. StorageFolder.GetFilesAsync()よりも高速にフォルダのファイルを取得できますか?
- 4. SQLサーバーはテーブルからデータを取得します
- 5. SSIS、テーブルのビュー、または条件付き分割の方が高速ですか?
- 6. TransactionScope中にデータベースからデータを取得できますか?
- 7. 2つのテーブルからデータを取得していますか?
- 8. 動的ページ/テーブルからデータを取得しますか?
- 9. どのMySQLクエリがより高速に取得できますか?
- 10. Ajaxの取得リクエストからデータを取得できません
- 11. facebook "URLからデータを取得できませんでした"
- 12. 値が ""のときテーブルの列からデータを取得できません
- 13. モデルからテーブル、カラム、タイプ情報を取得できますか?
- 14. どちらが高速で、key_cacheまたはOSキャッシュですか?
- 15. T SQL - SQLテーブルのフィールドまたはカラムからデータを取得する方法
- 16. プログラムで追加されたビューからデータを取得
- 17. CakePHP - テーブルからもデータを取得
- 18. HtmlAgilityPack - htmlテーブルからデータを取得
- 19. unordered_map:find()またはcount()のどちらが高速ですか?
- 20. テーブルを分割した後にデータを高速にクエリする方法はありますか?
- 21. Angular2はNodeJSからデータを取得できません
- 22. は配列からデータを取得できません
- 23. は、サービスからコントローラ内のデータを取得できません
- 24. サーバーからの更新を取得した後のリロード(テーブル)ビュー
- 25. プログラムで生成されたテーブルからデータを取得
- 26. アクティビティからサービスにデータを取得できません
- 27. ETSテーブルからのデータの取得
- 28. ビューでテーブルから物理的なデータストレージを取得する
- 29. 2つの異なるテーブルからデータベースからデータを取得します
- 30. どのようにNHibernateでテーブルからデータを取得する?
いいキャッチは、私は確かにインラインUDFを意味しました!私は非常に重要なポイントであるので、私の答えを更新します – AdaTheDev