日期:2014-05-18  浏览次数:20375 次

高分请教!同一个服务器2个结构完全相同的sql2000数据库表的查询速度为记录少的反而慢?
在一台sql2000数据库服务器上有两个用户库A和B,他们结构完全相同,包括索引等等。只是表里的记录数和内容不同。
其中有张数据量较大的业务表TA,A库大概有22万条记录,B库大概有38万条数据。
在查询分析器里分别连接两个库执行如下sql语句:
select   count(*)   from   TA;
结果A库用时62秒,B库用时4秒。换一台服务器同样如此!
TA这张表只有主键,没有建立索引。(而且上面那个sql语句也用不到索引)
完全一样的环境为什么记录数少的表反而比记录数多的表查询时间要多出这么多?
大家帮忙分析一下可能是什么原因?难道还和表的记录内容有关系???


------解决方案--------------------
62秒 : 4秒

count(*)
这个会直接从系统表中取值出来,不需要查询数据,所以应该是很快的,
第一个没有直接取值,是不是索引碎片的问题统计信息没有更新,LZ看看两条语句的执行计划是不是一样的

数据一样不代表数据占的空间也是一样的,A库应该是经常在更新,而B库的更新可能很少
------解决方案--------------------
在一台sql2000数据库服务器上有两个用户库A和B,他们结构完全相同,包括索引等等。只是表里的记录数和内容不同。

结构相同的表不等于查询速度就是一样,查询速度和表里的数据有最大的关系。
select count(*) from ta
这个语句是统计记录数的,执行的时候sql服务器是需要分析字段和数据的。因此不一样是正常的