Sybase select 查询 table 带有数字说明符

Sybase select query table with numeric specifier

在 sybase 过程中,我看到一个 SQL 查询如下

select max(mycolumn) from mytable (2) where id = @param1

这是什么(2)意思

如果我想为 oracle 过程重写这个 SQL,我该怎么做

假设这是 Sybase ASE ... <table_name> (X) 是一个索引提示,表示要使用索引(在 table <table_name> 上)索引 id = X (sysindexes.indid=X).在您的示例中,提示说将索引与 indid=2.

一起使用

如果 indid=2 没有索引,那么优化器将忽略此提示并尝试确定要使用的索引(如果有的话)。

要迁移到 Oracle(或与此相关的任何其他 RDBMS),只需删除 (2)


虽然 ASE 显然支持此功能,但使用它并不是一个好主意,除非您 100% 确定所需的索引将始终具有 indid=2。随着时间的推移,索引(包括支持 PK/UNIQ 约束的索引)为 added/dropped,分配给特定索引的 indid 可能会发生变化;您最不想做的事情(从性能角度来看)是强制使用错误的索引(即,indid=2 不再引用 SQL 开发人员想要使用的任何索引)。