PQL 快速入门
PQL基础
数据流转
输出文件
PQL 中的语句
分支和循环
更优雅的数据操作
PQL 高级特性
系统函数
自定义函数
扩展操作
其他语言相关
附录
使用 PAGE 语句进行分页读取数据的问题就是不能保证持续稳定的性能,在数据表有主键的情况下,可以使用 BLOCK 语句进行分块查询。
BLOCK 分块读取解决了 PAGE 语句越查越慢的问题,需注意几点问题:
FROM
和TO
。PER
表示每次查询数据的最大数量,每次查询的具体数量由主键是否连续决定。如果不指定,则默认为10000
行每次。@{id}
中的名称必须与数据表中自增主键名的一致。>
和<=
可以修改成>=
和<
,但不能同时都有=
号。PAGE 语句和 BLOCK 语句都将每次查询的数据保存在缓冲区,当保存或更新到目标数据库后即将这次查询的数据删除,以保证内存不被数据撑爆。所以在数据流转完成时,缓冲区的数据是空的。注意这种情况下不能再通过全局变量@BUFFER
访问缓冲区的数据,可用全局变量与 PAGE 基本相同。
@COUNT_OF_LAST_GET
这个不建议使用,获取值可能是 BLOCK 最后一次查询的结果数量。@TOTAL_COUNT_OF_RECENT_GET
这个是 BLOCK 所有查询的结果总数。BLOCK 语句的另一个应用场景是分块更新。这个场景应用非常少,只是有的关系型数据库更新性能不佳,如 TiDB。TiDB 不支持大批量的数据更新,只能按块更新。
综上,BLOCK 语句只支持 SELECT、DELETE 和 UPDATE 三种带 WHERE 条件的语句。
参考链接