- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
简述Visual FoxPro总体性能提高方法
简述Visual FoxPro总体性能提高方法Visual FoxPro关系型数据库引进了对象模型,提高了引擎的存取速度并增强了客户/服务器特性,使整个管理系统的功能更加强大。但是,这些强大功能的代价是管理系统变得更加复杂,很难避免出现低性能的应用程序。本文从实际工作中总结出一些改善、提高Visual FoxPro总体性能的技巧和方法,在此抛砖引玉。
一、改善本地数据访问的性能
1.正确创建索引。在Visual FoxPro中索引,就是用户根据数据库表中的某些字段值,为数据表建立一个顺序的索引文件。由于Visual FoxPro中的索引是基于树的数据结构,使得记录的显示、查询、打印更为迅速,同时也可以限制记录重复,并支持不同表之间的“关系”。索引的创建虽然十分简单,但不要建立太多的索引,因为Visual FoxPro需要更新每个索引,会降低程序的执行效率。创建索引的原则有二:一是只需在用于筛选和联接的数据上建立索引;二是不要在那些只有少数离散数据中取值的字段(如逻辑型字段)上建立索引。另外,应该避免以FOR或.NOT.这样的形式建立索引表达式,因为这些表达式无法优化。例如:INDEX ON DELETED()TAG DEL是可以进行Rushmore优化的,但是,INDEX ON.NOT.DELETED()TAG NOTDEL则不能。如果我们不想包含被删除的记录,解决的办法是先设置SET DELETED ON,再创建索引,同样可以加速操作。
2.使用新的数据类型。Visual FoxPro引入了4种新的数据类型:日期时间型、整型、双精度型和货币型。其中整型以四字节,其它数据类型以八字节的二进制数据形式存储在磁盘上。使用这些数据类型有两个优点:一是由于在磁盘上保存数据时所占的空间更小,使得在从磁盘向内存加载数据和索引时,一次可以加载更多,从而提高了应用程序的性能。二是不需要进行数据转换,数据访问更快。使用这些类型的数据作为主关键字和外部关键字的值,可以得到更小的数据表文件,更小的索引文件,更快的连接。
3.优化查询条件。Visual FoxPro通过查找与筛选表达式左边相匹配的索引表达式来优化筛选条件。我们经常试图将索引的标识名与一个筛选表达式相匹配,而Visual FoxPro是无法通过这种方式进行优化查询的。例如,下面的索引就是错误的:USE customers/INDEX ON UPPER(cu_name)TAG name/SELECT*FROM customers WHERE cu_name=BILL。
正确的方法是∶SELECT * FROM customers WHERE UPPER(cu_name)=BILL
4.事务安排要紧凑。在事务中包含其它任何操作,如:使用编程结构的CASE、WHILE或IF语句等,都会降低更新数据的效率。因为使用事务需要锁定记录,并且在提交事务之前不会释放这些锁定的记录。即使我们使用了RLOCK()或FLOCK(),然后执行UNLOCK,记录在END TRANSACTION或ROLLBACK语句之前也将一直保持锁定。因此,要提高Visual FoxPro的性能,就要减少锁定记录的时间。事务应该只包含更新数据操作。
二、提高远程数据访问的性能
1.访问远程视图。在一个应用程序的功能单元中(如表单或报表),往往不需要访问表中的所有数据。通过创建远程视图,得到(或更新)我们需要的部分数据,就可以减少通过网络的数据数量。
2.使用条件限定子句。为了进一步限制下载(或更新)的数据数量,可以使用WHERE子句。例如:我们只需要西南部的客户记录,SELECT语句为:
SELECT customer_id,company,contact,address FROM customers WHERE region=NORTHWEST
3.使用更新条件。视图设计器中的“更新条件”选项卡允许我们指定视图中的数据更新(插入和删除)。在“SQL WHERE子句包括”中,我们可以控制UPDATE和DELETE操作中WHERE子句的内容。这对于在后端控制数据冲突是很关键的,对于改善性能也是很重要的。因为我们向后端更新的字段总是可更新字段的子集(并且一定是视图中字段总数的子集),在大多数情况下都使用“关键字和已修改字段”选项。对于支持时间戳的服务器数据库,建议使用“关键字和时间戳”设置,这种更新方式比用“关键字和已修改字段”更快。
4.使用FetchMemo属性。FetchMemo属性控制当从后端取得一个记录时是否也取得备注和二进制(通用字段)数据。在需要时才使之为.T.。一般情况下,应将该属性设置为.F.,从而提高运行效率。
5.使用Packe
原创力文档


文档评论(0)