正在使用 query.getResultList();方法对性能有严重影响?
Is using query.getResultList(); method affect badly on performance?
我正在使用 Java 持久性 API 来开发一个独立的软件。我需要从数据库中获取单个结果和多个结果。我也有几个问题,
第一个是,
我正在使用 query.getResultList(); 方法来检索单个结果和多个结果。我想知道这个方法是否检索整个结果集或结果集的某些部分(比如在执行限制查询时,例如:*SELECT * FROM some_db
.some_table
LIMIT 100偏移量 120;*)。如果不是,是否会对性能产生严重影响? (在这种情况下,我正在考虑一个在某些表中包含大约 10000 条记录的数据库)
第二个,
使用query.getResultList();和query.getSingleResult();有什么影响
您应该将数据库端和服务器端部分分开。
如果你从 DB 端到服务器端得到 100 行,那么对于后面的服务器端执行来说,你 table 有多大并不重要。
所以,我认为您试图理解 query.getResultList()
仅使用一行的开销。恕我直言,你不应该为此烦恼。
基于docs,当您得到 0 行时,query.getResultList()
和 query.getSingleResult()
之间的差异似乎很小。
query.getSingleResult()
... if there are no results at all a NoResultException is thrown.
UPD
对于持久性 API 尝试使用这种方式创建查询:
getEntityManager().createQuery(query)
.setFirstResult(offset) // offset
.setMaxResults(limit) // limit
.getResultList();
我正在使用 Java 持久性 API 来开发一个独立的软件。我需要从数据库中获取单个结果和多个结果。我也有几个问题,
第一个是,
我正在使用 query.getResultList(); 方法来检索单个结果和多个结果。我想知道这个方法是否检索整个结果集或结果集的某些部分(比如在执行限制查询时,例如:*SELECT * FROM some_db
.some_table
LIMIT 100偏移量 120;*)。如果不是,是否会对性能产生严重影响? (在这种情况下,我正在考虑一个在某些表中包含大约 10000 条记录的数据库)
第二个,
使用query.getResultList();和query.getSingleResult();有什么影响
您应该将数据库端和服务器端部分分开。
如果你从 DB 端到服务器端得到 100 行,那么对于后面的服务器端执行来说,你 table 有多大并不重要。
所以,我认为您试图理解
query.getResultList()
仅使用一行的开销。恕我直言,你不应该为此烦恼。基于docs,当您得到 0 行时,
query.getResultList()
和query.getSingleResult()
之间的差异似乎很小。
query.getSingleResult()
... if there are no results at all a NoResultException is thrown.
UPD
对于持久性 API 尝试使用这种方式创建查询:
getEntityManager().createQuery(query)
.setFirstResult(offset) // offset
.setMaxResults(limit) // limit
.getResultList();