У меня SP, который занимает 10 секунд, чтобы работать около 10 раз (около секунды при каждом запуске). Платформа - asp .net, а сервер - SQL Server 2005. Я проиндексировал таблицу (не на ПК также), и это не проблема. Некоторые предостережения:
- usp_SaveKeyword не является проблемой. Я прокомментировал весь SP, и это не имело значения.
- Я установил @SearchID равным 1, и время было значительно сокращено, в среднем на транзакцию ушло всего около 15 мс.
- Я закомментировал всю хранимую процедуру, кроме вставки в 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