1

n+1 クエリの問題があるアプリケーションがありますが、データを熱心にロードする方法を実装したところ、パフォーマンスがまったく向上しませんでした。私は ID マップを使用しているため、オブジェクトは 1 回しか作成されません。

これは、約 3000 オブジェクトのベンチマークです。

first query + first object creation: 0.00636100769043 sec.
memory usage: 190008 bytes

iterate through all objects (queries + objects creation): 1.98003697395 sec.
memory usage: 7717116 bytes

そして、これは熱心な読み込みを使用した場合の例です。

query: 0.0881109237671 sec.
memory usage: 6948004 bytes

object creation: 1.91053009033 sec.
memory usage: 12650368 bytes

iterate through all objects: 1.96605396271 sec.
memory usage: 12686836 bytes

だから私の質問は

  1. 小さなクエリに関しては、SQLite は魔法のように電光石火のように高速ですか? (私は MySQL での作業に慣れています。)
  2. これは誰にとっても間違っているように見えますか?熱心な読み込みにより、パフォーマンスが大幅に向上するはずではありませんか?
4

1 に答える 1

1

あなたの「問題」の一部は、SQLITEが小さなクエリで非常に高速であることです!

「問題」のもう1つの症状は、SQLITEが単一のローカルファイルにアクセスする埋め込みコードであるため、パラメータのマーシャリング、ネットワーク経由の送信、表スペースファイルのオープン、応答のマーシャリングなどの通常のオーバーヘッドがないためです。データベース。

于 2009-07-13T01:57:07.573 に答える