dao.find()时,处理带有sum,count时比较慢,有什么解决办法吗

dao.find()时,处理带有sum,count时比较慢,有什么解决办法吗

评论区

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 对象,能提点速度,但这个提速基本可以忽略不计

热门反馈

扫码入社