我已经做了一些挖掘,我认为这里发生的事情是你实际上正在使用查询提示,即'(1)’.这是一个INDEX查询提示,您可以阅读有关这些
here的更多信息.
根据使用此格式而没有特定于WITH的文档已弃用,我不能在2008年执行此操作,但可能您使用的是其他特定版本或使用某种影响此功能的兼容模式.
如果您可以为包含这些语法的查询提供更多资源,我将能够继续挖掘.
这是我在服务器上运行时得到的结果:
select * from sysobjects WITH (1)
--Warning: Index hints supplied for view 'sysobjects' will be ignored.
编辑
我进一步研究了这一点,假设我的假设是正确的
SELECT 1 FROM TABLENAME(1)
等于
SELECT 1 FROM TABLENAME WITH (1)
然后下面证明了这一点,当指定一个大于表中可用索引数的整数时将导致异常.看一看:
--Table sysjobs has 4 indexes
select * from msdb..sysjobs with (4)
--1 row affected
select * from msdb..sysjobs with (5)
--Msg 307, Level 16, State 1, Line 2
--Index ID 5 on table 'msdb..sysjobs' (specified in the FROM clause) does not exist.