小编Jos*_*eld的帖子

SMS 建议覆盖索引中的所有列?

我对索引和数据库工作仍然有点新,所以我很可能会遗漏一些明显的东西。

SMS 建议在我的一个表中添加一个覆盖索引,我认为该列上的索引非常有意义。但是,它还建议在表中每隔一列包括(覆盖)。对我来说,这似乎是将整个表移动到索引中。我认为这可能是一个坏主意。在这种情况下,SMS 是否可能误导我?

更一般地说,是否有任何理由覆盖表中的每一列?

SELECT  * 
    FROM    SlideshowImages SI
    JOIN    Files F ON F.PK_FileID = SI.FK_FileID
    WHERE   F.FK_ModuleID   = 81
    AND     F.ParentType    = 2
    AND     F.FK_ItemID     = @SlideshowID
    ORDER BY F.[Order] ASC
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

SMS 的建议索引 - SlideshowImages 表的所有 10 列:

CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>]
ON [dbo].[SlideshowImages] ([FK_FileID])
INCLUDE ([PK_SlideshowImageID],[Title],[Caption],[IsLink],[LinkAddress],[StartDate],[EndDate],[AltText],[OpenInNewWindow])
Run Code Online (Sandbox Code Playgroud)

index sql-server t-sql

6
推荐指数
1
解决办法
417
查看次数

为什么非聚集索引使用聚集索引而不是直接使用表数据页?

从 Microsoft 课程(由第三方提供)中,我了解到当表具有聚集索引时,即使是非聚集索引也会命中聚集索引。

当我理解没有聚集索引(堆)时,非聚集索引直接引用到表的页面中。

假设正确理解,为什么非聚集索引会引用聚集索引而不是直接引用表的底层数据页?似乎直接引用表数据页的开销会更少。

index sql-server clustered-index

3
推荐指数
1
解决办法
395
查看次数

标签 统计

index ×2

sql-server ×2

clustered-index ×1

t-sql ×1