--------------------這需要4秒來執行(使用2000 000行)爲什麼?------- --------------SQL Server 2005性能查詢
DECLARE @AccountId INT
DECLARE @Max INT
DECLARE @MailingListId INT
SET @AccountId = 6730
SET @Max = 2000
SET @MailingListId = 82924
SELECT TOP (@Max) anp_Subscriber.Id , Name, Email
FROM anp_Subscription WITH(NOLOCK)
INNER JOIN anp_Subscriber WITH(NOLOCK)
ON anp_Subscriber.Id = anp_Subscription.SubscriberId
WHERE [MailingListId] = @MailingListId
AND Name LIKE '%joe%'
AND [AccountID] = @AccountId
---------------------這需要< 1秒執行(與2000年000行)-----------------------
SELECT TOP 2000 anp_Subscriber.Id ,Name, Email
FROM anp_Subscription WITH(NOLOCK)
INNER JOIN anp_Subscriber WITH(NOLOCK)
ON anp_Subscriber.Id = anp_Subscription.SubscriberId
WHERE [MailingListId] = 82924
AND Name LIKE '%joe%'
AND [AccountID] = 6730
爲什麼excecution時間差?我想在頂部使用查詢。我可以做任何事情來優化它嗎?
在此先感謝!/Christian
我認爲這是相關的:http://stackoverflow.com/questions/414336/why-does-the-sqlserver-optimizer-get-so-confused-with-parameters –
而MSDN文章:http:// technet.microsoft.com/en-gb/library/cc966425.aspx#E6TAE –
在第一種情況下,SQL Server必須使用這些參數的任何可能值的參數來優化查詢。在第二種情況下,使用實際的字面值,查詢優化器可以選擇更合適的查詢計劃 - 因爲它只需要針對這些特定的值進行完善。 –