我尝试执行以下命令强制更新使用非聚集索引:
UPDATE Flights
SET Airtime=5555678
WHERE Distance=10000
OPTION (TABLE HINT(Flights, INDEX (DistanceIndex)))
......它的错误:
Msg 8724,Level 16,State 1,Line 75
无法执行查询。表值或OPENROWSET功能'航班'不能在TABLE HINT子句中指定。
我无法找到关于如何在TABLE HINT
语句中正确形成语法的明确建议。
任何人都可以告诉我哪里出错了吗?
答案 0 :(得分:9)
请尝试以下操作:
UPDATE F
SET F.Airtime=5555678
FROM Flights F WITH (INDEX (DistanceIndex))
WHERE F.Distance=10000
或
UPDATE Flights
SET Airtime=5555678
FROM Flights -- this line is added to your initial query
WHERE Distance=10000
OPTION (TABLE HINT(Flights, INDEX (DistanceIndex)))
答案 1 :(得分:4)
@ i-one的回答是正确的,也是推荐的方式。
您也可以使用
UPDATE F
SET Airtime = 5555678
FROM Flights F
WHERE Distance = 10000
OPTION (TABLE HINT(F, INDEX (DistanceIndex)))
我们建议使用INDEX,FORCESCAN或FORCESEEK表提示作为 查询提示仅在计划指南的上下文中。