【发布时间】:2016-12-03 08:40:54
【问题描述】:
早安,
根据标题, 是否可以在查询中动态强制使用某个索引?
我正在尝试做的示例:
- 我有一个名为 #Employees 的临时表
- 此表尚未设置索引。
- 有一个名为Employees 的非临时表
- 此非临时表在“月份”列上有一个索引。
- 这是对我的环境的简化,主要源于 Sybase 决定不使用索引,除非我强制使用它。
@index 已被先前的代码设置为 inid 或确切的索引名称。我都试过了。
不允许更改非临时表。
*表:
EmployeeID(numeric) | EmployeeName(varchar) | Month(datetime) | Sallary(int)
查询:
insert into #Employees
select * from Employees (index @index)
where Month between 'Jan' and 'Dec'
使用这段代码,Sybase 只是说@index 附近有一个错误。
Q1: Can I do this?
Q2: If so, how?
Q3: If not, is there anything else I can do?
除非使用该索引,否则查询将不会完成,并且我 100% 确定地知道的 inid 在需要运行的所有服务器中并不相同,虽然我没有检查,但也不能保证索引名称本身是相同的。 我有一个查询可以根据它的列找到这个索引,我可以保证列名总是相同的。
提前致谢, ziv.
【问题讨论】: