首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
dao.find()时,处理带有sum,count时比较慢,有什么解决办法吗
crazykids
2019-04-30 09:40
dao.find()时,处理带有sum,count时比较慢,有什么解决办法吗
项目:
JFinal
评论区
crazykids
2019-04-30 09:44
我在数据库中只需要0.171s,但是用dao.find()时,需要2.3s
回复
JFinal
2019-04-30 09:55
find 会获取数据,有 io 开销,带有 sum、count 的,可以缩减 select 后面的字段,例如:
select * 改成
select x
再有,如果只是为了获取聚合函数的值,可以用:
Db.queryInt("select count(*) from t where ...", p1, p2, ...p3);
不要用 find
回复
JFinal
2019-04-30 09:55
find 会获取数据,有 io 开销,带有 sum、count 的,可以缩减 select 后面的字段,例如:
select * 改成
select x
再有,如果只是为了获取聚合函数的值,可以用:
Db.queryInt("select count(*) from t where ...", p1, p2, ...p3);
不要用 find,find 用于将查询的值封装成 model
回复
crazykids
2019-04-30 10:02
@JFinal
但是我这边不仅要用聚合函数,也得查表中的一部分字段,用queryInt合适吗
回复
JFinal
2019-04-30 11:07
@crazykids
find 方法本身是极快的,因为 jfinal 的任何数据库操作方法都是对 JDBC 的极薄封装
慢就慢在,如果你返回的数据条数多的话,io 动作就慢了, io 动作本身就与 jfinal 无关了
我这边不仅要用聚合函数,也得查表中的一部分字段,用 find 是可以的
也可以试试 Db.query 方法,该方法返回的值不封装为 Model、Record,是原生的 java 对象,能提点速度,但这个提速基本可以忽略不计
回复
发送
我要反馈
热门反馈
扫码入社