如何在 sql server 2008 中优化以下查询。特别是我需要优化的选择查询。(例如,DB = 10000 中的总记录,如果在 9999 行中消耗了_flag ='flase',则需要花费很多时间来检索单个记录)
DECLARE @proxyAcctToken nvarchar(50)
DECLARE @pmtAcctToken varchar(50)
DECLARE @ErrorCode varchar(50)
DECLARE @returnMessage varchar(1000)
DECLARE @ErrorStep varchar(100)
DECLARE @tokenSeqNo int
DECLARE @count int
SELECT @count=100000
WHILE(@count>0)
BEGIN
SELECT @ErrorCode = @@ERROR
BEGIN TRY
SELECT top 1 @tokenSeqNo=S_NO,@pmtAcctToken = PMT_ACCT_TOKEN, @proxyAcctToken=PROXY_PMT_TOKEN
FROM PCTransDB.dbo.MIG_TOKEN_DUMP WHERE CONSUMED_FLAG = 'false'
UPDATE PCTransDB.dbo.MIG_TOKEN_DUMP SET CONSUMED_FLAG = 'TRUE', CONSUMED_BY = 'MIGBATCH' WHERE S_NO = @tokenSeqNo
PRINT @count
SELECT @ErrorCode = 0
/*************************************
* Return from the Stored Procedure
*************************************/
END TRY
BEGIN CATCH
PRINT 'IN CATCH BLOCK'
END CATCH
SELECT @count = @count-1
SELECT @proxyAcctToken = null
SELECT @pmtAcctToken =null
END
注意:表格详细信息
Column Nmae DataType IsNullable
S_NO int NO
PROXY_PMT_TOKEN nvarchar NO
PMT_ACCT_TOKEN nvarchar NO
CONSUMED_FLAG bit NO
CONSUMED_BY nvarchar YES