我有两个完全一样的数据库
  一个数据库里有3万多条数据,另一个有50万条数据  写了一个数据统计的存储过程up_UnitSkillerBaseInfoStat,在50万条数据的这个库里能统计出来,时间只有4s 反而在3万多条数据的这个库里执行了3分多钟都统计不出来,不知道是什么原因,请各位大侠帮忙分析哈。

解决方案 »

  1.   

    遇到这种问题,首先要检查是否有阻塞。一般可以使用select * from sys.sysprocesses where blocked<>0,如果有数据,并且长期存在,那就证明已经阻塞了,用DBCC INPUTBUFFER(SPID)来看看是什么语句造成阻塞,可以kill掉的就kill掉。
    在没有阻塞的情况下,要检查索引是否一致,能在50万数据上运行正常的索引不可能在3万数据上运行缓慢。除非结构不一样或者有触发器之类的。
    实在不行,你就用SQLServer Profiler来检测一下你那句到底执行了些什么,但是用完记得马上关闭,否则服务器容易死掉。