最初由 foreverleee 发布
[B]今天有人说MS SQL慢,但是我都不知道应该怎么下手,ORACLE中可以看TOP,但是SQLSERVER中应该看什么呢? [/B]
SQL慢是有很多原因造成的:
第一:有可能是某张重要表的索引问题引起的,这时需要重建索引!
第二:由于硬盘空间不足(这种情况一般会出现网络写入超时的提示)
第三:由于新加入的程序设计上的缺陷导致查询进入死循环
第四:网络上出现严重掉包情况
第五:由于阻塞,给你个语句查询阻塞
--判断阻挡进程
drop table #yeqx
drop table #yeqx1
selectspid,
ecid,
status,
loginame=rtrim(loginame),
hostname,
blk=convert(char(5),blocked),
dbname = case
when dbid = 0 then null
when dbid0 then db_name(dbid)
end
,cmd
into #yeqx frommaster.dbo.sysprocesses
where blocked0
order by blocked
selectspid,
ecid,
status,
loginame=rtrim(loginame),
hostname,
blk=convert(char(5),blocked),
dbname = case
when dbid = 0 then null
when dbid0 then db_name(dbid)
end
,cmd
into #yeqx1 frommaster.dbo.sysprocesses
order by blocked
--SELECTA.SPID FROM
--(SELECTSPID,BLK FROM #YEQX) A,
--(SELECTBLK AS SPID,SPID AS BLK FROM #YEQX) B
--WHERE A.SPID=B.SPID AND A.BLK=B.BLK
select * from #yeqx1 where blk 0
select A.SPID as 被阻塞进程,a.CMD AS 正在执行的操作,A.BLK AS 阻塞进程号,b.cmd AS 阻塞进程正在执行的操作
from #yeqx a,#yeqx1 b
where a.blk NOT in(select spidfrom #yeqx) and a.blk *= b.spid
|