- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
21.在ESQL/C中有效使用滚动游标
第二十一章
在ESQL/C中有效使用滚动游标
本章讨论在使用滚动游标时遇到的问题。将学习如何使滚动游标较少地占用临时表空间,以及如何克服同陈旧数据有关的问题。
为了浏览多个记录的集合,滚动游标创建了一个临时表,该临时表中存放了所有满足SELECT语句的记录,该查询语句同滚动游标相关联。
DECLARE语句把一个名字同SELECT语句相关联,它需要的内存是非常少的。
OPEN语句将建立一个内存缓冲区,需要使用该该缓冲区把记录从数据库送往应用程序,缓冲区的大小是依赖于机器的。
FETCH语句同滚动游标一起使用时,将获取所有满足SELECT语句的记录。在上面的例子里,这将是customer表中的所有记录。这些记录写到磁盘的一个临时表中,所有其它的FECTH操作从临时表中获取它们要检索的记录。
CLOSE语句释放缓冲区和删除临时表。
使用滚动游标时实际上存在两个问题:临时表可能增长得非常大,以及表中的数据可能过期或称之为陈旧。
所有满足SELECT语句的记录在检索时将被写到临时表中,这可能使得这些临时表变得非常的大,造成存储问题。例如,客户表花费134个字节存放一个记录,如果在客户表中有20,000个记录,而且SELECT了所有的记录,临时表将占用超过2兆字节的空间来存放检索的记录。
滚动游标还有第二个问题。一旦记录读入到临时表中,所有后续的FETCH操作从该临时表获取记录。这意味着如果其他用户从客户表修改或删除记录,这些变化不会反映到临时表中,除非滚动游标再次打开。
一旦明白了游标的原理,解决办法陈述起来就十分容易。
为减少创建的临时表的大小,可以SELECT较少的记录或字段。
为避免陈旧数据,应确保在把记录显示给用户之前,从实际的表中重新获取记录的内容。下面几页描述了一个推荐使用的过程。
为实现该解决方法,使用两个游标。第一个游标,如上所示,仍是一个滚动游标,但是,它仅从客户表选择主键,而不是查询所有的字段。
每次执行针对该游标的FETCH操作时,只把主键值装入到程序变量中。该值在第二个游标中使用,定义的第二个游标基于第一个游标提供的主键查询整个记录。
定义第二个游标来选择整个记录。每次针对第一个游标执行FETCH操作时,针对第二个游标使用OPEN/FETCH操作。
该OPEN/FETCH操作序列将迫使第二个游标每次从实际的表中获取记录。第二个游标要FETCH的记录是基于第一个游标提供的值。
第一个游标是一个用于主键的滚动游标,它使你可以在主键的列表中前后移动。
第二个游标不是一个滚动游标,它根据第一个游标提供的值从磁盘上获取记录信息,从而避免了陈旧数据。在这里可以使用一般的SELECT语句,但是从性能上考虑推荐使用游标。
融海咨询 INFORMIX-ESQL/C
应用开发
在ESQL/C中有效使用滚动游标 21 - 1
您可能关注的文档
- 收藏的刀具该如何保养?.doc
- 提高作文能力策略一.docx
- 教学设计与反思模板85612473.doc
- 教案1一30中继教.doc
- 放牛班的春天 {感悟}.doc
- 教育学知识点(补充练习的答案在本资料找).doc
- 教育实践心得.doc
- 教案:调控情绪二.doc
- 教学中学生参与意识的培养.doc
- 新冀教版七年级英语上册(三年级起始版)lesson 42 Happy holidays导学案.doc
- 微纳多级结构锂离子电池电极材料的制备与性能研究.docx
- 碳纳米管掺杂锂离子电池材料的制备及电化学性能研究.docx
- 无ITO倒置聚合物太阳能电池制备与优化的研究.docx
- 新型共轭齐聚物与聚合物的设计合成及在有机太阳电池中的应用.docx
- 微生物燃料电池耦合污水处理工艺产电及脱氮效能研究.docx
- 碳纳米管阵列及吡咯基离子液体在锂空气电池中的应用.docx
- 微生物燃料电池的电子传递方式及其在典型有机污染物降解中的应用研究.docx
- 新型薄膜太阳能电池形貌特征、稳定性以及性能的研究.docx
- 石墨烯负载金属氧化物作为高性能锂离子电池负极材料的研究.docx
- 生物阴极微生物脱盐燃料电池驱动电容法深度除盐性能研究.docx
文档评论(0)