タグ付けされた質問 「temporary-tables」

セマンティクス、設計、パフォーマンス最適化、インデックス作成などの一時テーブルオブジェクト(テーブル変数ではない)の使用。[table-variable]も参照してください。

1
SELECT INTOは、実行前にTempDBで#Object名を予約しますか?
デバッグに役立つQuickieプロシージャをまとめると、コンパイラでエラーのように見えるものに遭遇しました。 create proc spFoo @param bit as begin if @param = 0 begin select * into #bar from [master].dbo.spt_values -- where number between ... end else begin select top 10 * into #bar from [master].dbo.spt_values order by newid(); end; end; 上記を試行すると、次のエラーが返されます メッセージ2714、レベル16、状態1、プロシージャspFoo、行19 データベースにはすでに「#bar」という名前のオブジェクトがあります。 人間が読める意味では、プロシージャは問題ないように見えます。ブロックselect into内にラップされているため、実行されるステートメントは1つだけですif-else。ただし、SQLサーバーは、ステートメントが互いに論理的に除外されていることを確認できません。おそらくもっと混乱するのdrop table #fooは、以下のようにがif-elseブロック内に配置されたときにエラーが残ることです(これにより、オブジェクト名の割り当てを解除するようコンパイラーに指示すると想定されます)。 create proc spFoo …

2
SQL Serverで派生テーブルよりも一時テーブルを使用する利点はありますか?
派生テーブルは一時テーブルよりもパフォーマンスが優れていますが、とにかく多くのSQL Server開発者は2番目のテーブルを好みます。どうして?大量のデータ(数百万のレコード)でクエリを実行する必要があり、最良の選択を使用していることを確認したい。 CREATE TABLE A( id BIGINT IDENTITY(1,1) NOT NULL, field1 INT NOT NULL, field2 VARCHAR(50) NULL, ); CREATE TABLE B( id INT IDENTITY(1,1) NOT NULL, field1 VARCHAR(10) NULL, field2 INT NULL ); INSERT INTO A (field1,field2) VALUES (1,'a'),(2,'b'),(3,'c'),(2,'d'),(5,'e'), (6,'f'),(7,'g'),(8,'h'),(9,'i'),(2,'j'); INSERT INTO B (field1,field2) VALUES ('a',1),('b',2),('c',3),('d',4),('e',5), ('f',6),('g',7),('h',8),('i',9),('j',2),('k',3); DECLARE @begin INT=0,@end …

2
多くのmysql一時テーブルを同時に作成するのは悪いことですか?
一部のデータをユーザーに提供するために、重い統計分析を行う必要があります。現在、私はmysqlからデータをキャッチし、PHP配列を介して処理しています。ただし、mysql一時テーブルの方がはるかに優れています(PHP配列よりもはるかに効率的で高速です。そのメカニズムにより)。 私の暫定的な解決策は、データをインポートして処理するための各要求(つまり、接続)時に一時テーブルを形成することです。しかし、多くの一時テーブルを同時に作成することの欠点があるかどうかはわかりませんか? これはmysqlサーバーに問題を引き起こす可能性がありますか?または、多数の同時リクエストでPHP配列の代わりとして使用できますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.