您的查询告诉数据库对满足WHERe子句的所有记录进行排序。在返回前50名之前,它可能会排序数百万条记录。
编辑1/26:现在已经弄清了具体问题,我将尝试更具体地回答。
每次执行这样的查询时,Hibernate都会进入数据库。甚至还会将会话中的所有新/更新数据刷新到磁盘。如果这是您的情况,则此行为可能会导致速度变慢。
在大多数情况下,使用Hibernate Query API的效果通常都很好,并且与各种数据库平台兼容。如果您真的很想降低数据访问层的性能,可以编写自己的本机SQL查询来选择前50个结果。但是,一旦这样做,您几乎肯定会失去数据库独立性。因此,请评估您的成本与收益。
您的查询运行时间似乎在毫秒级范围内。这通常与将数据存储在磁盘上的关系数据库一样好。因此,您可能需要评估您是否确实存在性能问题。
编辑1/27:好的。看起来好像页面的总体设计中存在问题。我使用AJAX已有大约7年了,因此在浏览表格的页面时,我通常不必等待筛选UI控件重绘。我想,切换应用程序UI框架不是您的选择。您必须找出如何优化下拉列表等数据的加载。此数据是否经常更改?您可以将其缓存在应用程序中的某个位置吗?如果您必须每次都加载它们,是否可以只获取显示字符串而不是整个对象而摆脱困境?



