5

なぜ一時テーブルを使用する必要があるのか​​ 、一時テーブルに特別なものがあり、一時テーブルをどこで使用する必要があるのか​​ 疑問があります。私または参考文献を説明してください。

4

3 に答える 3

11

T-SQL コードを記述する場合、そのコードを実行するときに一時的にデータを格納するためのテーブルが必要になることがよくあります。通常のテーブル、ローカル一時テーブル、グローバル一時テーブル、およびテーブル変数の 4 つのテーブル オプションがあります。4 つのテーブル オプションにはそれぞれ独自の目的と用途があり、それぞれに利点と問題があります。

* Normal tables are exactly that, physical tables defined in your database.

* Local temporary tables are temporary tables that are available only to the session that created them. These tables are automatically destroyed at the termination of the procedure or session that created them.

* Global temporary tables are temporary tables that are available to all sessions and all users. They are dropped automatically when the last session using the temporary table has completed. Both local temporary tables and global temporary tables are physical tables created within the tempdb database.

* Table variables are stored within memory but are laid out like a table. Table variables are partially stored on disk and partially stored in memory. It's a common misconception that table variables are stored only in memory. Because they are partially stored in memory, the access time for a table variable can be faster than the time it takes to access a temporary table.

どちらを使用するか:

* If you have less than 100 rows generally use a table variable.  Otherwise use  a temporary table.  This is because SQL Server won't create statistics on table variables.
* If you need to create indexes on it then you must use a temporary table.
* When using temporary tables always create them and create any indexes and then use them.  This will help reduce recompilations.  The impact of this is reduced starting in SQL Server 2005 but it's still a good idea.

このページを参照してください http://www.sqlteam.com/article/temporary-tables

于 2010-04-30T05:47:33.820 に答える
4

一時テーブルには多くの用途があります。これらは、複雑なクエリでデータを処理するのに非常に役立ちます。あなたの質問は漠然としていて、実際には答えがありませんが、一時テーブルのドキュメントにリンクしています。

制約やインデックス作成など、テーブルと同じ機能のほとんどを備えています。それらはグローバルにすることも、現在のスコープに限定することもできます。また、効率が悪い場合もありますので、いつものように注意してください。

http://www.sqlservercentral.com/articles/T-SQL/temptablesinsqlserver/1279/
http://msdn.microsoft.com/en-us/library/aa258255%28SQL.80%29.aspx

于 2010-04-30T05:46:51.727 に答える
2

一時テーブルは実行時に作成でき、1 つの通常のテーブルで実行できるあらゆる種類の操作を実行できます。ただし、テーブルの種類に基づいて、範囲が制限されます。これらのテーブルは、tempdb データベース内に作成されます。

SQL Server は、テーブルの動作とスコープに基づいて、2 種類の一時テーブルを提供します。これらは:

•<strong>ローカル一時テーブル

•<strong>グローバル一時テーブル

ローカル一時テーブル ローカル一時テーブルは、ユーザーの現在の接続でのみ使用できます。ユーザーがインスタンスから切断すると、それらは自動的に削除されます。ローカル一時テーブル名はハッシュ ( "#" ) 記号で始まります。グローバル一時テーブル グローバル一時テーブルの名前は、二重ハッシュ ( "##" ) で始まります。このテーブルが接続によって作成されると、永続テーブルのように、任意の接続で任意のユーザーが使用できるようになります。すべての接続が閉じられた後にのみ削除できます。

一時テーブルを使用する場合

•ストアド プロシージャで多数の行操作を行っている場合。•これは、カーソルを置き換えるのに便利です。結果セットのデータを一時テーブルに保存し、そこからデータを操作できます。•<strong>複雑な結合操作を行っている場合。

一時テーブルを使用する前の注意事項 -

•SQL Server の tempdb に作成された一時テーブル。これは別のデータベースです。したがって、これは追加のオーバーヘッドであり、パフォーマンスの問題を引き起こす可能性があります。•行と列の数は、必要最小限にする必要があります。•テーブルは、作業が完了したら削除する必要があります。

代替アプローチ: テーブル変数 -

一時テーブルの代替は、一時テーブルで実行できるあらゆる種類の操作を実行できるテーブル変数です。以下は、テーブル変数を使用するための構文です。

テーブル変数オーバー一時テーブルを使用する場合 -

テーブル変数は、データが少ない場合に常に役立ちます。結果セットが多数のレコードを返す場合は、一時テーブルを使用する必要があります。

于 2012-03-28T05:43:51.540 に答える