約10回(実行するたびに約1秒)実行するのに10秒かかるSPがあります。プラットフォームはasp.netで、サーバーはSQL Server 2005です。テーブルにインデックスを付けました(PKにもありません)。これは問題ではありません。いくつかの警告:
- 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