我们的应用程序中有以下SQL命令。
SELECT trackerid,taskid,action,sendto, sendtofullname, recfrom, actiontime
FROM [LO].[dbo].[TRACKER] WITH (NOLOCK)
where [EVENTRECORDID] = ? and ACTION in (1,4,5,15,4000,4200)
order by Actiontime
它运行了一段时间,速度非常快,但最后几天变得非常缓慢。我把它改成
SELECT trackerid,taskid,action,sendto, sendtofulln
(首先是一些上下文,因为虽然我希望问题足够笼统,但我们总是被告知解决方案取决于上下文。在这个场景中没有DBA。)
这是一个很小的办公室数据库,每周使用5天,每天8小时,由少数几个运行程序的客户端使用,这些程序主要做清单和每次少量的插入/更新。
数据库是一个单一的文件,大约有25个表,目前它运行到20 GB,其中19个由同一个表使用,该表具有blob (image)列。
数据文件每天都有备份,但在其10多年的时间里,除了从服务器转移到服务器之外,从来没有进行过任何维护--它是从SQL server 2005 / Windows SBS 2003开始的,更改了3次,现在使用的是SQL server