Visual FoxPro 9中新的数据处理方式

作者:凯旋网络来源:凯旋网络
例,它的二进制索引文件的大小差不多为表大小的三十分之一。尺寸越小意味着在执行APPEND和REPLACE操作时I/O处理速度越快,但遗憾的是所有的Rushmore优化技术目前都还不支持二进制索引。

  假如SQL语句返回的记录起过表中总记录的三分之一的话,那Rushmore将得到很好的发挥(当所有的记录都命中的话会提高92%的速度)。假如SQL语句返回的记录低于总记录的三分之一,那Rushmore将变得很慢(假如没有记录命中的话会降低两倍的速度)。

  在Visual FoxPro 9中,将DELETE语句设置为二进制索引是一种增强性能的简单方法。但要注重版本的问题,因为以前的版本并不支持这种新的索引方式。

  Rushmore优化技术

  新版本中有使用了大量的Rushmore优化技术,例如对TOP N[PERCENT]作了优化,这样便能提供更好的性能。它一般与ORDER BY子句配合使用,返回前N个或者前百分比数目的记录。在Visaul FoxPro 9中它减少了内排序操作和文件I/O操作,使得执行这种类型的语句占用更少的内存,并且正如此语句所言,它只返回确切的前N个记录。

  在以前的版本中,假如要统计一个班级总分排在前十名的学生,但中间存在并列名次的话,那结果会返回多于10个的记录。

  在适当的情况下,Visual FoxPro 9将在FOR DELETED()子句和FOR NOT DELETED()子句中使用过滤索引来对MIN()和MAX()这两个聚集函数进行优化,可以提高MIN()和MAX()的计算速度。

  假如LIKE模糊查询语句中的条件以“%”为结尾,那查询速度也将得到很大提高(请注重,“%”只能出现在查询条件的结尾,而不能出现在其它地方,否则优化无效)。这种优化的结果等同于普通WHERE子句查询的速度。

  更多的智能索引技术

  Visual FoxPro 9比以前的版本更智能化,它充分地让索引获得Rushmore的优化技术,如下所示:

INDEX ON DELETED() TAG DELETED

  以上语句自动对NOT DELETED()和DELETED()条件进行优化,不用你添加一条INDEX ON NOT DELETED()来实现。

  这里有个特例,就是当索引过过滤表达式采用了FOR NOT DELETED()作为Rushmore的优化,并且SET DELETED设为ON的话,那就无须为 NOT DELETED()作优化。
  • 广告推荐