SQL Cursor 游标的使用
Updated:
Contents
SQL Cursor 游标的使用
这两天在做新老系统间的data migration,接触到sql的游标,记录总结一下。
我们的需求是要求map多张表,并把计算结果分别更新到一张目标表中, 新旧系统要做A/B Testing, 所以当旧表有任何更新,比如新增,删除,改动, 都要更新到新表中。
原本我选择的方案是采用批量Insert, 但碰到一个需要插入map关系的表, 其中一个field是另外一张表刚刚插入数据的id, 因此只能用循环来解决。 看了一圈SQL的for循环,实现起来略显费力。当然也有用while do
或临时表等其他解决方案,欢迎发邮件探讨,这里分享一下游标的使用心得。
以我的理解,可以把游标想象成一个指针,我们使用一个指针的时候需要做的事情:
- 声明指针
- 把指针指向一个地址
- 获取指针内容
- 移动指针指向新的地址
这样理解起来游标就比较方便, 下面举个例子来说明游标的使用方法:
|
|
总结: 游标是一种较易理解易读的程序写作模型,但如果使用不当,很容易扼杀性能,谨慎使用。