hey guys, У меня есть запрос в 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
Для этого вам понадобится полное индексирование текста. Вы выполняете поиск подстановочных знаков в трех самых больших столбцах таблицы, поэтому кластерное сканирование индексов является единственным разумным планом/индексированием для этого запроса. Сколько строк находится в 'CrossArticle_Article'? –
@Martin: в crossarticle_article насчитывается около 22000 записей. можете ли вы также рассказать мне, как я могу использовать полнотекстовый индекс для решения этой проблемы? – Abbas