在uniqueResult()之前使用setMaxResults(1)进行hibernate优化?

dar*_*urf 4 java hibernate sqlperformance

在写字

session.createCriteria(Person.class) .add(Restrictions.eq("id", personId)) .setMaxResults(1) .uniqueResult();

比写作更好

session.createCriteria(Person.class) .add(Restrictions.eq("id", personId)) .uniqueResult();

从优化的角度来看?第一个查询会更快吗?

Dra*_*vic 7

有时将结果集行显式限制为预期数量可能会给数据库提供一个提示,以构建更优化的查询执行计划.

但是,在大多数数据库中,通过主键查询是最佳的过滤条件,因此任何附加条件都不会带来任何好处.实际上,额外的sql片段只会增加db优化器丢弃冗余过滤条件所花费的语句解析时间和时间.

  • @darksmurf在这种情况下,它全部取决于数据库,实际查询,索引等.不要过早优化.通常,令人困惑的代码可能比不明显的性能提升带来的好处要大得多.如果您发现添加它可以显着提高性能,那么添加它并将其记录在代码中的注释中,以便添加它. (2认同)