2011-10-03 14 views
0

「ルーキー」の質問は事前にお詫びしますが、私は基本的にSQLのほとんどの面で初心者です。 私の質問は、The Art of SQLの第2章の一部です。 「安定したデータベース接続」というタイトルの記事では、データベースに多数の行を挿入するためのいくつかの方法について記述しています。レコード挿入の効率的なデータベースへのアクセス

 
Test; Results 
Connect/Disconnect for each line in turn; 7.4 lines loaded per second 
Connect Once, all candidate lines individually inserted; 1,681 lines loaded per second 
Connect Once, all candidate lines inserted in arrays of 10 lines; 5,914 lines inserted per second 
Connect Once, all candidate lines inserted in arrays of of 100 lines; 9,190 lines inserted per second 

さらに、著者は「さらに高速なダイレクトローディング手法」について言及しています。

残念ながら、私は配列の挿入の考え方を完全には理解していません。著者は、配列を挿入するという点で、他の「直接読み込み技術」という言葉を参考にして、誰が参考にしているテクニックについて詳しく説明できますか?

答えて

6

著者は

INSERT INTO Table (Column) 
VALUES ('myValue') 

が唯一の非常に高速であることを行っていることを示しています。

それは著者が10個のVALUESアイテムを持つことが毎秒5914行を挿入しますが、単一のSQL文であり100の項目場合、負荷率が上がることを言っている

INSERT INTO Table (Column) 
VALUES ('myFirstValue'), 
('mySecondValue'), ... 

を行うには非常に高速になります9,190ライン/秒。

最後に、「ダイレクトローディング手法」は、バルク挿入操作を指しています。 msSQL bulk insertには、ファイルをアップロードしてテーブルに処理するためのチュートリアルが多数あります。

+0

XMLファイルを送信して、そこから行を挿入することができます(少なくともSQL Serverでは)。それはかなり速いです。一括挿入と同じくらい高速ではなく、INSERT INTOテーブルの "書式設定" – xanatos

4

大量のデータをSQLServerテーブルに挿入する最も速い方法は、プロセスを「一括挿入」として知られていることです。これを行うにはいくつかの方法があります。 SQL Serverにはbcpというコマンドラインアプリケーションがあり、TSQLコマンドBULK INSERTがあり、.NET SQLクライアントオブジェクトSystem.Data.SqlClient.SqlBulkCopyがあります。