日期:2008-09-07  浏览次数:21122 次

硬件配置:赛扬300A(超频到4.5*100用)、内存224MB、硬盘4.3G昆腾火球八代、6.4G昆腾火球九代各一个(系统装在6.4G的盘上)

IIS4.0+sp6、Sql server7.0英文版(安装全文检索服务)


记录数293415(数据库大小1.24GB)、每页大小20条记录,共14671页。
下列时间由Sql server的getdate函数测得:

           花费时间:

不搜索(直接定位页):
第一页:      90ms
第1000页:  2783ms
第2000页:  5516ms
第4000页: 11246ms
第8000页: 22020ms
第10000页:27430ms
第14671页:超时

上下翻页:90ms(由于上下翻页采用ID记录定位查找,时间跟页的前后没有关系,也就是从第1页翻到第2页跟从第10000页翻到第10001页所用的时间是一样的)

在此测试中:发现Sql server将绝大部分时间花在填充游标上,游标内记录条数越多,花时间越长;每条记录的内容越多,所花的时间越长。这就提醒在使用时,在Select语句中,尽量将不用的字段去掉,以增快速度。


执行贴子标题搜索时:
没找到时:14930ms,其中包括4056ms为计算记录条数时间。
找到293411条,显示第1页,21270ms,其中包括计算记录条数count(*)所用6276ms
找到293411条,显示第5000页,24153ms,其中包括计算记录条数count(*)所用5216ms
二次搜索(不计数)显示10000页,24066ms.
二次搜索后,上下翻页:130ms.

显示记录内容及相关标题:
当没有给rootid做索引时,用去了9秒左右;给rootid加上索引后,时间减为4.5秒左右;索引经过优化后,时间加快到2.7秒;将execute(@sql)改为直接执行相应的Select语句后,最后时间变为870ms左右。
忠告二:任何时候都要使用索引加快查找速度,还应该注意索引的优化。

发贴时,深度大了好象很慢……一层要用1秒左右?