在 uniqueResult() 之前使用 setMaxResults(1) 进行休眠优化?
Using setMaxResults(1) before uniqueResult() for hibernate optimization?
正在写作
session.createCriteria(Person.class)
.add(Restrictions.eq("id", personId))
.setMaxResults(1)
.uniqueResult();
比写作更好
session.createCriteria(Person.class)
.add(Restrictions.eq("id", personId))
.uniqueResult();
从优化的角度?第一次查询会更快吗?
有时将结果集行数显式限制为预期数量可能会提示数据库构建更优化的查询执行计划。
然而,在大多数数据库中,按主键查询无论如何都是最佳过滤条件,因此任何额外的条件都不会带来任何好处。实际上,额外的 sql 片段只会增加语句解析时间和数据库优化器丢弃冗余过滤条件所花费的时间。
正在写作
session.createCriteria(Person.class)
.add(Restrictions.eq("id", personId))
.setMaxResults(1)
.uniqueResult();
比写作更好
session.createCriteria(Person.class)
.add(Restrictions.eq("id", personId))
.uniqueResult();
从优化的角度?第一次查询会更快吗?
有时将结果集行数显式限制为预期数量可能会提示数据库构建更优化的查询执行计划。
然而,在大多数数据库中,按主键查询无论如何都是最佳过滤条件,因此任何额外的条件都不会带来任何好处。实际上,额外的 sql 片段只会增加语句解析时间和数据库优化器丢弃冗余过滤条件所花费的时间。