嘿傢伙, 我有一個查詢在sql服務器需要至少10-15秒執行,當這在asp.net中調用,它是最糟糕的那裏,它只是拋出請求超時錯誤。索引問題在SQL服務器
以下是我正在使用的查詢。
SELECT C.Id,
C.Summary,
C.Title,
C.Author,
CONVERT(VARCHAR(12), C.PublishDate, 104)
AS 'DATE',
'/Article/' + SUBSTRING(dbo.RemoveSpecialChars(C.Title), 0, 10) + '/' + CAST(CA.CategoryId AS VARCHAR(MAX)) + '/' + CAST(C.Id AS VARCHAR(MAX)) +
'.aspx' AS
'URL'
FROM CrossArticle_Article C
INNER JOIN CrossArticle_ArticleToCategory CA
ON C.Id = CA.ArticleId
WHERE C.Title LIKE '%' + @KEYWORD + '%'
OR C.Summary LIKE '%' + @KEYWORD + '%'
OR C.Article LIKE '%' + @KEYWORD + '%'
SELECT @@ROWCOUNT
以下是字段說明。
Id int Primary Key
Summary nvarchar(1000)
Title nvarchar(200)
Author nvarchar(200)
PublishDate DateTime
CategoryId int PrimaryKey
我認爲這可以通過使用包括使用這些列的索引來解決。我檢查了網,但沒有找到任何解決辦法..
如果我能得到幫助,同樣我將不勝感激。 感謝和問候 Abbas Electricwala
您需要查看全文索引。您正在對錶上最寬的3列進行主導通配符搜索,因此聚簇索引掃描是此查詢唯一合理的計劃/索引。 'CrossArticle_Article'中有多少行? – 2011-03-29 14:59:49
@Martin:在crossarticle_article中有大約22000條記錄。你能告訴我如何使用全文索引來解決這個問題 – Abbas 2011-03-29 15:07:29