索引如何减慢select语句的速度?

Art*_*his 6 sql sql-server indexing performance

我很难找到为什么在表的外键上添加索引会减慢我的同事的观点.此视图由具有外连接和内连接的多个打包视图组成.我试图逐一删除它们以找出问题所在,但我不能说,它似乎不是来自特定的视图,而是来自它们的更多.

我知道索引可以减慢插入速度或者它们在硬盘驱动器上占用大小,但我从来没有读过他们可能负责减慢视图的任何地方.事实就是我这样做:

DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS
GO

select top 20 * from  MyView
Run Code Online (Sandbox Code Playgroud)

索引需要20秒而没有索引需要9秒.

CREATE NONCLUSTERED INDEX [IX_MyField] ON [dbo].MyTable
(
    [MyField] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, 
  IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON,
  ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

JNK*_*JNK 9

您的OTHER索引或统计信息可能已过期.如果它们不是最新的,查询分析器可能会使用您的新索引选择次优执行计划,因为它认为会更快.

试试跑步:

UPDATE STATISTICS WITH (FULLSCAN)

在你的桌子上.