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