Java 正在使用query.getResultList();方法对性能有严重影响?

Java 正在使用query.getResultList();方法对性能有严重影响?,java,mysql,database,performance,persistence,Java,Mysql,Database,Performance,Persistence,我正在使用Java持久性API开发一个独立的软件。我需要从数据库中获得单个结果以及多个结果。我还有几个问题 一是, 我正在使用query.getResultList()用于检索单个结果和多个结果的方法。我想知道这个方法是检索整个结果集还是结果集的某个部分(比如执行限制查询时,例如:*从some\u dbsome\u tablelimit 100 OFFSET 120;*))。如果没有,是否会严重影响性能?(在本例中,我考虑的是在某些表中包含大约10000条记录的数据库) 第二个, 使用query

我正在使用Java持久性API开发一个独立的软件。我需要从数据库中获得单个结果以及多个结果。我还有几个问题

一是,

我正在使用query.getResultList()用于检索单个结果和多个结果的方法。我想知道这个方法是检索整个结果集还是结果集的某个部分(比如执行限制查询时,例如:*从
some\u db
some\u table
limit 100 OFFSET 120;*))。如果没有,是否会严重影响性能?(在本例中,我考虑的是在某些表中包含大约10000条记录的数据库)

第二个,


使用query.getResultList()会产生什么影响query.getSingleResult()

您应该将数据库端和服务器端部分分开

  • 如果从数据库端到服务器端得到100行,则对于后一个服务器端执行,表的大小无关紧要

  • 因此,您试图理解
    query.getResultList()
    只使用一行的开销。嗯,你不应该为此烦恼

  • 基于这一点,当得到0行结果时,
    query.getResultList()
    query.getSingleResult()
    之间似乎存在细微差别

  • query.getSingleResult()

    。。。如果根本没有结果,将抛出NoResultException

    UPD

    对于持久性API,请尝试使用以下方法创建查询:

    getEntityManager().createQuery(查询)
    .setFirstResult(偏移量)//偏移量
    .setMaxResults(限制)//限制
    
    .getResultList()

    限制100偏移量120
    在DB端工作并对结果进行切片。所以,你总共有多少行并不重要。是的,但我认为处理一个充满对象的列表可能会对软件方面的性能产生一些影响。因为query.getResultList();返回具有特定对象类型的列表。我想我很大程度上取决于您使用的持久性提供程序,因为JPA规范不包含任何关于性能优化的注释。因此,看一下,getSingleResult()甚至委托给同一个getResultList()方法。如果您使用的是DB2,则会给出一个轻微的查询提示以进行优化database@Lars我在用日食。对于这个框架来说,我是个新手。我正在开发这个软件,同时学习如何使用persistence做事情。无论如何,感谢您提供的信息和来源:-)我的意思是,如果我使用一些sql查询来获得结果,我可以在我想要的时候获得我想要的数据块,例如:如果我需要100个结果来进行报告,我可以使用LIMIT 100 OFFSET 200或其他方法来获得特定的100个结果。但我不能这样做,因为我使用的是持久性API,我必须得到所有结果和主列表的子列表()才能得到我想要的100个。但是会有一个列表,其中包括100个有用的结果和其他9900个不需要的结果。我在问如何解决这个问题?不需要的9900结果集会导致速度减慢吗?谢谢,这就是我需要知道的,有没有比getResultList()更快的替代方法?我正在从一个表中加载2列,但总共有700000个结果。运行query.getResultList()需要75秒。SQL跟踪显示查询本身在不到1秒的时间内运行。还有什么可以延迟这种方法?