【问题标题】:Sybase select query table with numeric specifier带有数字说明符的 Sybase 选择查询表
【发布时间】:2020-08-09 23:56:55
【问题描述】:

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

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

(2) 是什么意思

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

【问题讨论】:

    标签: select sybase


    【解决方案1】:

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

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

    要迁移到 Oracle(或任何其他 RDBMS),只需删除 (2)


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-05
      • 2018-05-27
      • 2018-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多