美好的一天,
根据标题, 是否可以在查询中动态强制使用某个索引?
我尝试做的例子:
@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。
答案 0 :(得分:0)
在提供提示时,您似乎必须使用硬编码的索引名称。例如,如果月份列上的索引被称为month_index
,则以下内容将起作用:
insert into #Employees
select * from Employees (index month_index)
where Month between '2016-01-01' and '2016-12-31'
但是如果你没有指定索引,那么Sybase可能会使用你拥有的任何单个inxex作为默认值。