我们有一个包含 120,000 行的用户表(MySQL)
List<User> users = session.createQuery("from User").list();
这个休眠查询大约需要 6 到 9 秒来执行。我们该如何优化呢?MySQL是瓶颈吗?还是.list()
通常这么慢?
我们有一个包含 120,000 行的用户表(MySQL)
List<User> users = session.createQuery("from User").list();
这个休眠查询大约需要 6 到 9 秒来执行。我们该如何优化呢?MySQL是瓶颈吗?还是.list()
通常这么慢?
在查询中使用分页。您不应一次调用所有行。您可以设置结果的第一个位置和最大结果。例如,如果您想读取前 100 个结果而不是更改您的查询,例如:
Query q=session.createQuery("from User");
q.setFirstResult(fistRes);// this will variable
q.setMaxResults(maxRes);// this will also be variable as parameter.
当然它很慢,因为查询执行全表扫描。您应该加入与之关联的其他对象,包括where
查询的子句,可以更改查询以返回有限数量的记录或使用条件 API 和投影。