概述
抛开网络延迟硬件层面不谈的话,可以从两个层面去优化:数据库层面及代码层面。
数据库层面
- 对常用查询条件加索引;
- 某些常常仅用于展示的字段,可以适当冗余到表里面,减少连表次数;
- 数据量庞大的表考虑分表处理;
代码层面
- 避免慢SQL,数据库某些内置函数会使索引失效,如mysql的RANDOM,DATE_FORMAT等;
- 避免循环体内执行数据库操作,可以先查询所有的可用结果,在循环体内筛选数据;
试验
针对代码层面的第二点(以下简称方法A),做出如下试验:
分别使用公司内置的查询框架、jdbcTemplate以及方法A,在循环体内查询目标数据,该表总共包含254条数据,各查询5次并统计查询耗时。
代码
// 公司内置查询框架
// jdbcTemplate
// 方法A