私は Excel 2010 を持っています。VBA コードでは、1 つのプロシージャが SQPEXPR 2008 からデータをフェッチします。
呼び出しが繰り返され、何度も同じ/フィルター データがフェッチされます (Excel ドキュメントに既に存在します)。
キャッシングを適用するのは良いユースケースです (パフォーマンス向上のため)。
出来ますか?はいどうですか?
SQL Native Client を使用してデータベースに接続します。
私は Excel 2010 を持っています。VBA コードでは、1 つのプロシージャが SQPEXPR 2008 からデータをフェッチします。
呼び出しが繰り返され、何度も同じ/フィルター データがフェッチされます (Excel ドキュメントに既に存在します)。
キャッシングを適用するのは良いユースケースです (パフォーマンス向上のため)。
出来ますか?はいどうですか?
SQL Native Client を使用してデータベースに接続します。
キャッシュしたい基になるデータを更新するときは、更新された日付も保存します。これは、手動またはトリガーを介して行うことができます。
Excel でメイン データのクエリを実行する場合は、最終更新日もクエリして Excel スプレッドシートに保存します。
最後に、Excel からデータ更新操作を実行する場合は、最初にクエリを実行して、現在の最終更新日が格納されている最終更新日と同じかどうかを確認します。その場合、データを更新する必要はありません。
データに固有の「最終更新日」があり、その最初の列としてこの値を持つ任意の種類のインデックスがある場合、「最終更新日」は既に問題なく保存されています。シークは 1 回だけで済みます。最新の更新日を読み取り、そこから同じ最適化を導き出すことができます。
SELECT TOP 1 DateChanged FROM dbo.YourTable ORDER BY DateChanged DESC;
で話していたインデックスを仮定するとDateChanged
、「テーブルの最終更新日」の日付が得られます。また、もちろん、挿入または更新時にテーブルに対するすべての操作がこの日付を忠実に更新し、行が削除されず、非アクティブとマークされるだけであると仮定します (そうしないと、行を削除することがわかりません)。
最終更新日を個別に明示的に保存するか、列を暗黙的に使用するかのいずれにしても、データをキャッシュする方法ができました。
ブラウザーと Web サーバーがこのタスクをどのように実行するかを考えると役立つかもしれません。これは、私が概説したとおりです。要求されているファイルには変更日があり、このデータは最初にクライアント ブラウザーと交換されます。ファイルの日付が、ブラウザにキャッシュされたコピーよりも新しい場合にのみ、ブラウザは実際のファイルの内容を要求します。