Mik*_*Dev 5 sql-server indexing performance
我有一个运行缓慢的更新查询(请参阅下面的第一个查询).我在PhoneStatus表和PhoneID列上创建了一个名为IX_PhoneStatus_PhoneID的索引.Table PhoneStatus包含2000万条记录.当我运行以下查询时,不使用索引并使用聚簇索引扫描,反过来更新运行缓慢.
UPDATE PhoneStatus
SET RecordEndDate = GETDATE()
WHERE PhoneID = 126
Run Code Online (Sandbox Code Playgroud)
如果我执行以下查询,其中包括新的FROM,我仍然遇到与未使用的索引相同的问题.
UPDATE PhoneStatus
SET RecordEndDate = GETDATE()
FROM Cust_Profile.PhoneStatus
WHERE PhoneID = 126
Run Code Online (Sandbox Code Playgroud)
但是,如果我添加HINT以强制在FROM上使用索引它可以正常工作,并使用索引搜索.
UPDATE PhoneStatus
SET RecordEndDate = GETDATE()
FROM Cust_Profile.PhoneStatus WITH(INDEX(IX_PhoneStatus_PhoneID))
WHERE PhoneID = 126
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么第一个查询不会使用索引?
更新
在包含2000万条记录的表中,每个phoneID最多可以显示10次
BarDev