sql server仅使用存储过程扫描来自Table的上周记录

时间:2014-05-05 10:34:15

标签: sql sql-server stored-procedures

我正在使用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天的数据..但是这个存储过程扫描我的整个表.. 我的执行计划是这样的: enter image description here

0 个答案:

没有答案