我们有一个包含12万行的User表(MySQL)
List<User> users = session.createQuery("from User").list();
这个hibernate查询大约需要6到9秒才能执行。我们怎么才能优化这个呢?MySQL是瓶颈吗?或者.list()
通常都这么慢?
发布于 2013-10-05 17:27:23
当然,这很慢,因为查询执行整个表扫描。您应该加入与它相关的其他对象,包括查询的where
子句,查询可以更改为返回有限数量的记录或使用条件API和投影。
发布于 2013-10-05 17:25:16
对查询使用分页。您不应该一次调用所有行。您可以设置结果的第一个位置和最大结果。例如,如果您希望读取前100个结果,请将查询更改如下:
Query q=session.createQuery("from User");
q.setFirstResult(fistRes);// this will variable
q.setMaxResults(maxRes);// this will also be variable as parameter.
https://stackoverflow.com/questions/19200551
复制相似问题