私は索引で選択しているすべての列を追加したにもかかわらず、なぜこのキー照会に照会するのか理解しようとしていますか?これはなぜキールックアップを照会するのですか?
ここでは、クエリ
SELECT TOP 1
ART.Id,
ART.Title,
ART.InitialTitle,
ART.Summary,
ART.IsCategoryFirst,
ART.RootCategoryId,
CAT.Name,
ART.OldFacebookCommentsUrl,
ICO.CssClass,
ART.TopicName,
ART.MainArticlePhoto,
ART.FrontPagePhoto,
ART.PublishDate
FROM Articles ART WITH (NOLOCK)
INNER JOIN Categories CAT WITH (NOLOCK) ON CAT.Id = ART.RootCategoryId
LEFT JOIN ArticleIcons ICO WITH (NOLOCK) ON ICO.Id = ART.IconId
WHERE ART.RootCategoryId = 3
AND ART.PublishDate < GETDATE()
AND ART.Active = 1
AND IsCategoryFirst = 1
ここでは、これはそれのための実行計画と情報である
CREATE NONCLUSTERED INDEX [SmallArticleResponse] ON [dbo].[Articles]
(
[RootCategoryId] ASC,
[Active] ASC,
[PublishDate] DESC,
[Coefficient] DESC
)
INCLUDE ( [Id],
[Title],
[InitialTitle],
[OldFacebookCommentsUrl],
[Summary],
[IconId],
[TopicName],
[FrontPagePhoto],
[MainArticlePhoto],
[FacebookPhoto],
[IsCategoryFirst]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
IsCategoryFirst列がキーに含まれていない可能性が高いためです。逆に、別のインデックスがあるため(1列?)、その代わりにそのインデックスを使用しています。 –
となります。愚かな私 – Robert
少しのofftopic:あなたは 'with(nolock)'節について興味深い記事を見つけるかもしれません - https://blogs.sentryone.com/aaronbertrand/bad-habits-nolock-everywhere/ – pkuderov