これはFluentNHibernateを使用して行われています
1つのテーブルからデータを取得するNHibernateルックアップがあります。生成されたSQLを取得し、クエリアナライザーで実行すると、実行に約18ミリ秒かかります。
NHProfilerを使用すると、このクエリの期間は〜1800msになります-SQLの100倍です!
Query duration
- Database only:1800ms
- Total: 1806ms
移入されているオブジェクトには子クラスが含まれていますが、この子はNHibernateの第2レベルのキャッシュからロードされています
返されるデータはページングされます(クエリごとに50)が、私が知る限り、これは何の違いもありません。
また、カウントを実行しています。これも、クエリアナライザで最大4ミリ秒、NHProfilerによると最大1800ミリ秒かかります。
NH Profilerは、クエリの実行時間、またはクラスを取得、マッピング、オブジェクトグラフを作成するための完全な時間を表示していますか?前者の場合、クエリを直接実行するよりもはるかに時間がかかるのはなぜですか?
編集:NHプロファイラーで指定されたクエリ期間の値に関するAyendeによるこの投稿を見つけました:http://ayende.com/Blog/archive/2009/06/28/nh-prof-query-duration.aspx-それは間違いなくです時間がかかっているデータベースのクエリ