私はnHibernateで次のクエリを持っています。アイデアは特定のデータグループの最初と最後の測定時間を取得することです。nHibernateのmin&maxクエリの最適化
var measurements = _session.Query<Measurement>()
.Where(x => categories.Contains(x.CategoryId));
first = measurements.Min(o => o.StartTime);
last = measurements.Max(o => o.StartTime);
SQL Serverプロファイラは、出力を次与える:それはデータベースサーバにのみ要求が作成されますように
exec sp_executesql N'select cast(min(measuremen0_.StartTime) as DATETIME) as col_0_0_ from Measurement measuremen0_ where measuremen0_.Category in (@p0 , @p1)',N'@p0 int,@p1 int',@p0=7654321,@p1=3324673
exec sp_executesql N'select cast(max(measuremen0_.StartTime) as DATETIME) as col_0_0_ from Measurement measuremen0_ where measuremen0_.Category in (@p0 , @p1)',N'@p0 int,@p1 int',@p0=7654321,@p1=3324673
私は何とか、HQLを使用せずに、このを最適化することはできますか?
なぜHQLはありませんか?それはあなたの宗教か何かに対して反対ですか? –
私の場合、HQLはSQLを書くのとほとんど同じですが、読みやすさ、IntelliSense、ORM(マッピング関係)を使用している点全体を失うと思います。 – Tx3
私は、時にはより低レベルの方法で(HQLのように)行う必要があることを認めなければなりません。多分これはそういう場合でしょうか?しかし、私は人々にHQL以外の方法で答えを考えるように促したいと思っています。 – Tx3