INSERT INTOとSELECT INTOの違い 質問する

INSERT INTOとSELECT INTOの違い 質問する

使用の違いは何ですか?

SELECT ... INTO MyTable FROM...

そして

INSERT INTO MyTable (...)
SELECT ... FROM ....

?

BOLより[入れる選択...]、SELECT...INTOを使用すると挿入テーブルが作成されることがわかりますデフォルトのファイルグループまだ存在しない場合は、このステートメントのログ記録はデータベースの復旧モデルによって異なります。

  1. どちらの記述が好ましいでしょうか?
  2. 他にパフォーマンスへの影響はありますか?
  3. INSERT INTO ... よりも SELECT...INTO を使用するのに適した使用例は何ですか?

編集: SELECT INTO... は存在しないテーブルを作成することはわかっているとすでに述べました。私が知りたいのは、SQL にこのステートメントが含まれている理由が何なのかということです。行を挿入するために舞台裏で何か違うことをしているのでしょうか、それとも単に および の上に構文糖を加えただけなのでしょうCREATE TABLEINSERT INTO

ベストアンサー1

  1. これらは異なる機能を果たします。INSERTテーブルが存在する場合に使用します。テーブルSELECT INTOが存在しない場合に使用します。

  2. はい。INSERTテーブルヒントがない場合、通常はログに記録されます。SELECT INTO適切なトレース フラグが設定されていると仮定すると、最小限のログが記録されます。

  3. 私の経験では、これはテーブルSELECT INTOなどの中間データ セットで使用される#tempか、バックアップなどのためにテーブル全体をコピーする場合に最もよく使用されます。INSERT INTO既知の構造を持つ既存のテーブルに挿入する場合に使用されます。

編集

編集に対処するために、それらは異なることを行います。テーブルを作成していて、構造を定義したい場合は、CREATE TABLEとを使用しますINSERT。発生する可能性のある問題の例: varchar フィールドを持つ小さなテーブルがあります。テーブル内の最大の文字列は現在 12 バイトです。実際のデータ セットには最大 200 バイトが必要です。SELECT INTO小さなテーブルから新しいテーブルを作成すると、フィールドが小さすぎるため、後者はINSERT切り捨てエラーで失敗します。

おすすめ記事