我正在使用mybatis 3.1.0 jar和spring mybatis jar。
我需要16秒才能将44000行拉出到3000个实体对象中。
拍摄时间:正常查询执行时间:11秒
有任何提高绩效的建议吗?
感谢。
答案 0 :(得分:2)
首先,做一些分析,看看您花了多少时间(a)提取数据,例如:在独立数据库工具中运行查询并对其进行基准测试,然后(b)将数据编组到对象中花费了多少。
后续步骤将取决于(a)或(b)中哪一个表现最差。
如果(a),则花时间调整查询 - 对表进行索引,对基础结构进行非规范化。
如果(b)考虑更平坦或人口较少的模型。
编辑:
DB方面的额外想法减少11秒的持续时间:
对象方面的额外想法:
额外的一般想法:
添加一些日志记录,例如单个案例(或者说,例如100),看看时间在应用程序中花费的时间,你需要通用的代码优化技术 - 任何循环,或者不是100%必要的,看看改变/删除
如果性能是最重要的考虑因素,请考虑更改您的要求 - 以不同方式构建您的页面或屏幕,例如,以便让您更快地进行数据库检索
第二次编辑 - 您真的需要使用所有44,000行和它们提供的3,000个对象吗?你可以用更少的时间,例如将它们分成10组并与它们分页? (猜测,你的应用程序可能什么都不做)
答案 1 :(得分:2)
mybatis配置上的某些措施可以处理这些情况,
1)将fetchSize设置为相当大的数量。我将fetchsize设置为1000
2)不检索和映射所有列(仅映射必要的列减少了时间)
3)使用嵌套连接而不是嵌套选择。