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 开发人员想要使用的任何索引)。
在 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 开发人员想要使用的任何索引)。