1

我们有一个包含 120,000 行的用户表(MySQL)

List<User> users = session.createQuery("from User").list();

这个休眠查询大约需要 6 到 9 秒来执行。我们该如何优化呢?MySQL是瓶颈吗?还是.list()通常这么慢?

4

2 回答 2

1

在查询中使用分页。您不应一次调用所有行。您可以设置结果的第一个位置和最大结果。例如,如果您想读取前 100 个结果而不是更改您的查询,例如:

Query q=session.createQuery("from User");
q.setFirstResult(fistRes);// this will variable
q.setMaxResults(maxRes);// this will also be variable as parameter.
于 2013-10-05T17:25:16.340 回答
1

当然它很慢,因为查询执行全表扫描。您应该加入与之关联的其他对象,包括where查询的子句,可以更改查询以返回有限数量的记录或使用条件 API 和投影。

于 2013-10-05T17:27:23.347 回答