问题说明
smartbi中Sql分页和结果集分页的区别在哪?
思路
分页策略:系统设置:表示读取 系统选项 > 查询设置> 分页策略 中的设置。初始值为SQL分页。
此分页策略用于比较特殊(某些数据库在创建SQL查询嵌套Order时执行不通过)的情况,建议在遇到此情况直接使用原生SQL查询。
- SQL分页:表示查询外套一层后根据返回结果分段分页。
- 结果集分页:表示不封装一层的SQL,直接把SQL预览中的语句放到数据库中执行然后取行分页。
1) 首先需要明白:可视化查询和sql查询均会在预览的sql外面封装一层。原生sql查询则是手工输入什么sql,后台执行什么sql。
2) 基于可视化查询和sql查询封装的这一层,可设置sql分页。所以可视化查询和sql查询可以设置sql分页以及结果集分页,但是原生sql查询只能进行结果集分页。
比如,有100条数据,每页显示10条:
A、设置sql分页
输入的sql语句为下图:
后台的分页取数机制是,在封装的外层sql中用limit语句来限制取数的范围,如下图:
B、结果集分页
展示第一页数据:在数据库中,先将select * from table这个语句执行出来,要取1000条数据,先从第1行数据开始数,获取后面1000条数据在是smartbi中展示;
展示第二页数据:在数据库中,再次执行select * from table语句,还是从第1行数据开始数,数到1000行,获取1000后面1000条的数据在smartbi中展示;
......
以此类推;
所以,若是通过数据集分页,越是展现后面页的数据,速度会越慢。