使用の違いは何ですか?
SELECT ... INTO MyTable FROM...
そして
INSERT INTO MyTable (...)
SELECT ... FROM ....
?
BOLより[入れる、選択...]、SELECT...INTOを使用すると挿入テーブルが作成されることがわかりますデフォルトのファイルグループまだ存在しない場合は、このステートメントのログ記録はデータベースの復旧モデルによって異なります。
- どちらの記述が好ましいでしょうか?
- 他にパフォーマンスへの影響はありますか?
- INSERT INTO ... よりも SELECT...INTO を使用するのに適した使用例は何ですか?
編集: SELECT INTO... は存在しないテーブルを作成することはわかっているとすでに述べました。私が知りたいのは、SQL にこのステートメントが含まれている理由が何なのかということです。行を挿入するために舞台裏で何か違うことをしているのでしょうか、それとも単に および の上に構文糖を加えただけなのでしょうCREATE TABLE
かINSERT INTO
。
ベストアンサー1
これらは異なる機能を果たします。
INSERT
テーブルが存在する場合に使用します。テーブルSELECT INTO
が存在しない場合に使用します。はい。
INSERT
テーブルヒントがない場合、通常はログに記録されます。SELECT INTO
適切なトレース フラグが設定されていると仮定すると、最小限のログが記録されます。私の経験では、これはテーブル
SELECT INTO
などの中間データ セットで使用される#temp
か、バックアップなどのためにテーブル全体をコピーする場合に最もよく使用されます。INSERT INTO
既知の構造を持つ既存のテーブルに挿入する場合に使用されます。
編集
編集に対処するために、それらは異なることを行います。テーブルを作成していて、構造を定義したい場合は、CREATE TABLE
とを使用しますINSERT
。発生する可能性のある問題の例: varchar フィールドを持つ小さなテーブルがあります。テーブル内の最大の文字列は現在 12 バイトです。実際のデータ セットには最大 200 バイトが必要です。SELECT INTO
小さなテーブルから新しいテーブルを作成すると、フィールドが小さすぎるため、後者はINSERT
切り捨てエラーで失敗します。