MSSQLのCTEとテーブルの変数を使用した場合と一時テーブルを使用する場合のパフォーマンスの違いを誰でも簡単に分けることができます。私は一時テーブルを頻繁に使用してきましたが、明確な構文のためにCTEを使用し始めましたが、私はそれらがより遅くなることを発見しました。私はテンポラリテーブルがシステムメモリを使用していると思うので、それらは速く見えますが、複数のジョブを実行しようとするとボトルネックになる可能性があります。テーブル変数私は控えめに使用しており、大したことは分かりません。グルの外からのアドバイスをお探しですか?テンポラリテーブルのストレージパフォーマンスの比較
2
A
答えて
0
のセットに通過Books Online、MSDN、およびこのサイトでよくカバーされています。
ここで読むことができる一時テーブルとテーブル変数についてはWhat's the difference between a temp table and table variable in SQL Server?です。 多くの場合、テンポラリテーブルはプロシージャの再コンパイルを引き起こすことがありますが、これは主な欠点です。
のCTEはよくメモリにそうとは限らない、私は一時テーブル(#table)は、システムのDBに格納されていると信じてここにhttp://blogs.msdn.com/b/craigfr/archive/2007/10/18/ctes-common-table-expressions.aspx
0
CTEはパフォーマンスに中立です。 SQLステートメント(通常は複雑なJOINやフィールドに適用される組み込み関数)を抽象化することによって、開発者のクエリを簡略化します。データベースエンジンは、CTEを使用するクエリにCTEをインライン化するだけです。したがって、CTE自体は「低速」ではありませんが、データベースエンジンが一時テーブルを使用するクエリでより良いクエリプランを作成しているため、一時テーブルでパフォーマンスが向上していることがあります。
0
関連する問題
- 1. ストレージパフォーマンス
- 2. NOT CONTAINSを使用して2つのテンポラリテーブル間で結果を比較する
- 3. クエリー間の比較行の比較
- 4. データベーススキーマの比較 - SQLオブジェクトの比較
- 5. TFS/VSの比較/比較ツール
- 6. ペアワイズ比較のみ比較R
- 7. PostgreSQL - INSERT INTOパフォーマンス比較の比較
- 8. のJava - 比較
- 9. テーブルの比較
- 10. のMySQL:比較
- 11. MouseEventの比較
- 12. マージソートカウントの比較
- 13. decltypeの比較
- 14. のInt比較
- 15. スキーマの比較
- 16. サブクエリの比較
- 17. テストパフォーマンスの比較
- 18. レルムオブジェクトリストの比較
- 19. カスタムタイプの比較
- 20. ランタイムの比較
- 21. イベントアクションの比較
- 22. クラスの比較
- 23. JSONArraysの比較
- 24. TimeSpan.Compareの比較
- 25. エンティティの比較
- 26. DropDownListsの比較
- 27. arraylistの比較
- 28. リストオブジェクトの比較
- 29. セマンティックセグメンテーションの比較
- 30. JavaParserの比較
記述されている(そしてまた、彼らは、照合のように、特定のプロパティのためのサーバのデフォルト設定を継承します)。しかし、私がコメントした主な理由は、あなたのタグがmssqlではなくmysqlであると言うことでした。 – tomfumb
@tomfumb、それらはtempdbシステムデータベースに格納されます。 –