2009-07-13 8 views
1

私はn + 1クエリの問題を抱えるアプリケーションを持っていますが、データを熱心に読み込む方法を実装したとき、私はアイデンティティマップを使用するので、オブジェクトは一度しか作成されません。PHP、SQLiteを使用した多数のクエリと比較したクエリ

ここに〜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. これは誰にも間違っているようですか?熱心なローディングではるかに優れたパフォーマンスが得られるはずですか?

答えて

1

「問題」の一部は、小さなクエリで高速の稲妻です!

「問題」の他の症状は、SQLiteのは、単一のローカルファイルへのアクセス埋め込みコード であるため、回答などを整列化 マーシャリングパラメータの通常のオーバーヘッドのどれも、ネットワーク経由で送信、オープンテーブル スペースファイルは、存在しないですあなたは重いの データベースを取得します。

+0

Aha! SQLiteは私の期待よりもはるかに高いパフォーマンスを示します。 多くのクエリを実行しているスクリプトを使用し続けるのが最善でしょうか?彼らはどちらもほぼ同じ時間を取るので、私はそれが重要ではないと仮定しています。 –

関連する問題