没有登录
中国开发网: 论坛: 程序员情感CBD: 贴子 183287
DeepBlue: 游标要尽量避免
检讨每个游标 (Cursor)

游标的使用对系统的性能有严重的影响。SQL是面向数据集(set_oriented languase)的操作,游标是面向数据行的操作,SQL的效率要大大高于游标。游标在锁,网络资源和指令操作上对系统性能造成了影响,其中尤其以指令开销最严重,每处理一行数据都需要和数据库进行交互。一般认为3条SQL对数据进行3次扫描处理的效率也比用游标扫描一次的效率要好。

大多数的游标的工作都可以通过转换程序设计逻辑和改写成SQL来完成。

如果一定要使用游标则在存储过程中使用。

如果一定要使用游标则要显式声明for read only 或者是for Update。

强烈建议对现有系统中使用的每个游标进行检讨(包括原来ERP系统的和XXXX二次开发的,依照使用频率高低作为优先次序)。建议通过小组讨论的形式来消除每个游标,在这过程中可以提高每个团队成员的程序设计逻辑和SQL书写技巧。如果某个游标难以改写,则将其写入存储过程,待积累一定改写游标的经验后再重新评估。

建议对于代码中新增加的游标要经过小组讨论才能加入代码中。


执行力=流程+计划+组织

把理想变成计划,
把计划变成步骤,
把步骤变成行动,
把行动变成成果。

好語說盡人必易之。規矩行盡人必繁之。福若受盡緣必孤。勢若使盡禍必至。

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录