VFP配合SQLSERVER开发C/S系统

来源:计算机等级考试    发布时间:2012-08-28    计算机等级考试视频    评论

把SHOW STATS TIME 和SHOW STATS I/O两个选项打勾,然后点OK. 这两个选项将会告诉你命令的运行时间和读写次数.
如果你的SQL命令里用到多个表,还可以选上QUERY菜单上的SHOW EXECUTION PLAN, 它会告诉你的命令在各各表上所花费的时间.

选一个没有索引的大小适当的表,然后执行一条Select命令,你会看到运行时间.
比如我用了表CHQ,有将近40万条记录, 执行下面的命令,返回5000多个记录

select * from Chq where date >=’02/01/2001’ and date<=’02/28/2001’ 

显示的时间和读写情况: 
Table ’chq’. Scan count 1, logical reads 13145, physical reads 0, read-ahead reads 13152. 
SQL Server Execution Times: CPU time = 5781 ms, elapsed time = 23526 ms. 

然后我在CHQ表上对DATE字段建立索引,再运行相同的Select, 得到如下结果: 
Table ’chq’. Scan count 1, logical reads 3965, physical reads 14, read-ahead reads 0. 
SQL Server Execution Times: CPU time = 704 ms, elapsed time = 6432 ms. 

比较两个结果可以看出, 建立索引后,逻辑读写和预读写次数大大减少, 占用CPU时间从5.781秒减少到了0.704秒, 总运行时间从23.526秒减少到6.432秒 
如果运行更复杂的命令,效果会更加明显. 

2. 了解SQL SERVER的索引 

SQL SERVER的数据文件和索引文件都是以页为单位存放的,每页是8K. 相当于把磁盘划分成8K大小的块,以块为单位存放数据. 
了解这一点是非常重要的, 它能帮助你理解下面的内容. 

SQL SERVER的索引有2大类, 
一类是CLUSTERED(物理索引),每个表只能有一个, 记录在磁盘上存放时完全按照物理索引的顺序. 
另一类是NONCLUSTERED(逻辑索引), 记录顺序存放在索引表里. 

不管是哪类索引,只要能到达目的,索引表达式(包含的字段)越简单越有效. 

什么字段作为物理索引最合适? 

有两个原则: 一是在根据范围来选择记录时,哪个字段最有效, 二是在往磁盘上写记录是不会引起热点(HOT SPOT). 
热点是指,大量读写发生在磁盘的同一区域,引起I/O瓶颈效应,降低运行速度. 

我们用例子来看看这些原则怎么用. 
假如有个单据表, 包含这些字段: 单据号,单据日期,金额,销售地点,已经其它数据. 
哪个适合作为物理索引呢? 一般的想法是用没有重复值的字段(相当于VFP里的主键). 

a. 用单据号, 其实这不是恰当的选择. 因为很少有根据单据的范围来选择记录的, 比如你很少用命令来查询单据号大于或者小于某个值的记录. 而且在输入时,也比较容易产生热点, 因为插入的记录一般都加在表尾,当有大量用户同时输入时,会产生热点. 单据号不符合上面的2条原则.

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答