SQL函数的性能较差,当数据量大时会导致加载缓慢。您的报表同时支持填报和查看功能,使用多个SQL函数会加剧性能问题。
优化方案
- 替换SQL函数 
- 优先使用value()函数替代sql()和ds1.select()函数,因为value()的性能最好 
- 示例:将sql("ds1","select name from table")改为value("ds1","name") 
- 分离查看和填报功能 
- 虽然业务希望保持现有方式,但可以考虑: 
- 为查看功能单独创建一个模板,使用优化的查询方式 
- 填报模板专注于数据录入功能,减少复杂查询 
- 使用抽数缓存 
- 建议可以使用抽数缓存功能优化取数速度 
- 对频繁查询但变化不大的数据启用缓存 
- 优化SQL查询 
- 确保SQL语句本身高效,添加适当的索引 
- 通过查询条件限制每次查询的数据量 
- 条件控制 
性能对比
| 函数类型 | 性能排名 | 适用场景 | 
|---|
| value() | 最优 | 简单数据查询 | 
| ds1.select() | 中等 | 中等复杂度查询 | 
| sql() | 最差 | 复杂查询(尽量避免) | 

建议优先尝试用value()函数替换现有的sql()函数,这通常能带来最明显的性能提升。如果必须使用复杂查询,再考虑其他优化方案。