.NET Sql ServerへのアクセスがExcel Interopよりも速いのはなぜですか?
-
05-07-2019 - |
質問
これはロードされた質問かもしれず、投票されるかもしれませんが、それは私を完全に失望させます。
開発でSQL Serverを使用する場合、データアクセスは高速で効率的ですが、COMを使用してExcelと通信する場合は時間がかかります。
使用するデータアクセステクノロジー、ADO、ADO.NET、LINQ、Entity Framework、Astoria(ADO.NET Data Services)は関係ありません。これらはすべて、Excelの自動化よりも高速です。
セル" A1"のデータだけが必要な場合ワークブックから、1つのデータポイントを取得するために、Excel.Application、Excel.Workbook、Excel.Worksheet、およびExcel.Rangeオブジェクトが必要です。
WTF、なぜExcelと話すよりもSQL Serverと話す方が効率的ですか? Excelはローカルであり、SQL Serverはそうでない場合があります。
TIA クリス
解決
インタラクティブなアプリケーションとして設計された大きなモノリシック実行可能ファイルのスピンアップは、高速ネットワークを介して目的のために設計されたアプリケーションと通信するよりも遅いためです。
他のヒント
Excelと話す必要があるたびに、サーバーはExcelプログラムを実際に起動する必要があります。それは隠されたデスクトップにありますが、それでもプログラム全体を起動しています。複数の人がサイトを使用している場合、それはExcelの複数のインスタンスでもあります。そして、同じワークブックを共有している場合、さらに悪いことになります。
一方、Sql Serverは、既に実行中です。接続するだけです。それはこの種のもののために構築されました。 Excelはそうではありませんでした。
Excelは2007年でもcom相互運用機能です。しかし、多くのヘルパーがいます
これは、SQLサーバーがデータをサーバーするように設計されているためです。Excelはそうではありません。ここでは、SQLサーバーから1000から数百万の行を取得するまで、ネットワーク遅延は関係しません。