我有一个 SP 需要 10 秒运行大约 10 次(每次运行大约一秒)。平台是asp .net,服务器是SQL Server 2005。我已经对表进行了索引(也没有在PK上),这不是问题。一些警告:
- usp_SaveKeyword 不是问题。我注释掉了整个 SP 并没有什么不同。
- 我将@SearchID 设置为1,时间大大减少,事务平均只需要大约15ms。
- 除了插入到 tblSearches 之外,我注释掉了整个存储过程,奇怪的是它需要更多的时间来执行。
对可能发生的事情有任何想法吗?
set ANSI_NULLS ON
go
ALTER PROCEDURE [dbo].[usp_NewSearch]
@Keyword VARCHAR(50),
@SessionID UNIQUEIDENTIFIER,
@time SMALLDATETIME = NULL,
@CityID INT = NULL
AS
BEGIN
SET NOCOUNT ON;
IF @time IS NULL SET @time = GETDATE();
DECLARE @KeywordID INT;
EXEC @KeywordID = usp_SaveKeyword @Keyword;
PRINT 'KeywordID : '
PRINT @KeywordID
DECLARE @SearchID BIGINT;
SELECT TOP 1 @SearchID = SearchID
FROM tblSearches
WHERE SessionID = @SessionID
AND KeywordID = @KeywordID;
IF @SearchID IS NULL BEGIN
INSERT INTO tblSearches
(KeywordID, [time], SessionID, CityID)
VALUES
(@KeywordID, @time, @SessionID, @CityID)
SELECT Scope_Identity();
END
ELSE BEGIN
SELECT @SearchID
END
END