2012-01-03 19 views
1

私はVB.Net(4.0)のデスクトップアプリケーションで作業しています 多くの挿入クエリを含むSQLスクリプトがたくさんあります。 Currenltyは、我々はSQL Server 2008の.Net一括コピーまたはテーブル値パラメータを使用したパフォーマンス比較一括挿入

一つの方法

は、パフォーマンスのために、私たちはSQLを変更することを計画しているSMOを使用してスクリプトを(http://msdn.microsoft.com/en-us/library/ms162557.aspx)を実行していますスクリプトをxmlファイルに追加します(挿入クエリの代わりに、適切なxsdを持つ xmlデータがあります)。 xmlをdataSetにロードし、SQL一括コピーを使用してSQL Serverに挿入しようとしています。 dataSet に

第二の方法

ロードXMLは、(XMLファイルからcreted)データセット内のデータテーブルに基づいて、ユーザ定義のテーブル・タイプを作成し、このテーブル・タイプなどのパラメータを持つストアドプロシージャを作成します。そのspには、 tablenameへの挿入 select * from tablevalueparameterが含まれます。

ですので、私には最適で適切な方法を提案してください。前もって感謝します。

+0

[bcp/BULK INSERTのパフォーマンスとテーブル値のパラメータ]の可能な複製(http://stackoverflow.com/questions/2149897/performance-of-bcp-bulk-insert-vs-table-valued-parameters )またはhttp://stackoverflow.com/q/8618261/27535または – gbn

答えて

1

非科学的な答えは...

  • SQLBulkCopyはTVPアプローチ
  • に最適化されたテーブル値パラメーターは、 "正常な" SQL

のような役割を果たし異なるAPIを使用するのと同じ順序だろうSQLBulkCopyよりも遅いと期待している個別のINSERT文を実行していると考えられます。

しかし、私は各テクニックがあなたが持っている行の数に依存すると思います:1000sまたは10k +バッチについては、私はストアドプロシージャを必要としないので、SQLBulkCopyを考えずに使用します。

+0

私はこのような答えは科学的ではありませんが、 –

関連する問題