如题所述:这两个数据的数据库文件是在不同的磁盘的上的。但是查询速度就不一样,数据库A文件比数据库B的文件要小(小3倍多)。他们都复制相同的表及数据,查询语句也是一样的,可是在数据库A上的速度要比在数据库B的速度要慢3倍多。后来启用了跟踪,两个数据库的查询速度就相差不大,只相差20多毫秒,接着把跟踪停掉后再对两个数据库进行截断日志和收缩数据库再进行的查询的时间相差变回3倍多,再启用跟踪也是一样相差3倍多

另外跟踪得到两个批处理的CPU完成时间分别为A库1827,B库1249
,另外两个库都是在同一个机器上的同一个实例上的,磁盘是没有问题的。而B库存有的表比A库的表要多,总的数据量也比A库的大,所以A库的数据库文件要比B库的数据库文件要大,但是A库的查询速度怎么会比B库慢呢,是什么原因导致的?所有查询都是在查询分析器上完成的

解决方案 »

  1.   

    1.SQL语句都加上(nolock)试试,原理就不讲了.2.简化SQL语句,例如都执行select * from [数据库名].dbo.[TableName] (nolock)以上,若时间再有差异,那就怀疑是不同磁盘或磁盘分区的读写队列和繁忙程度有关.
      

  2.   

    不同的磁盘的上,應該與硬件有很多關係,磁盤的轉速不同,讀寫能力就不同。“都不存索引”,數據存儲是以堆積方式存儲,資料row並未以特定順序來儲存,並且資料頁也沒有特定順序。資料頁並未連結於連結串列 (Linked List) 中。 這些就可能導致相同的結構相同的數據,存儲數據的物理位置不同,查詢的效率不同。