我正在使用sql server 2008 ..我有一个Transaction_tbl,其中包含超过2个缺少的数据..每天增加30000条记录..我有一个存储过程..需要只获取最近7天的交易来自这个表..但在执行扫描所有表格并给出结果的存储过程时...这使我的系统变慢..所以我不想扫描所有表格..
我想从表中扫描最近7天的记录,并提供正确的数据..
我的表结构如下:
transactID int
TBarcode varchar(20)
Locid int
PlateNo varchar(20)
dtime datetime
DelEcode nvarchar(50)
Paydate datetime
KeyRoomDate datetime
DelDate datetime
Status int
我的存储过程如下:
ALTER procedure [dbo].[IBSFVRIPodiumG]
@locid INTEGER = NULL
AS BEGIN
SET NOCOUNT ON
DECLARE @TodayMinus7Days DATETIME
Declare @krrt integer
Declare @DT integer
SET @TodayMinus7Days = getdate()-7
SELECT
t.TBarcode, t.PlateNo, t.DelEcode,cast(t.Paydate as Time) [REQ],
datediff(MINUTE, t.PayDate,
CASE t.Status
WHEN 3 THEN GETDATE()
WHEN 4 THEN t.KeyRoomDate
When 5 THEN t.KeyRoomDate
End) as KRRT,
datediff(MINUTE,t.PayDate,
CASE t.Status
WHEN 3 THEN GETDATE()
WHEN 4 THEN GETDATE()
WHEN 5 THEN t.DelDate
END) as DT
FROM
dbo.Transaction_tbl t
WHERE
(
([status] IN (3,4))
OR
([status]=5 and DelDate >=DATEADD(minute,-3,getdate()))
)
AND locid = @locid AND dtime >= @TodayMinus7Days
ORDER BY
paydate
end
在Transaction_tbl中我有一个关于locid的索引,以及状态和dtime ..我想从我的表中只获取最近7天的数据..但是这个存储过程扫描我的整个表.. 我的执行计划是这样的: