【问题标题】:difference between "tab" table and all_tables in oracleoracle中“tab”表和all_tables的区别
【发布时间】:2013-01-12 09:37:29
【问题描述】:

使用(在 oracle 中)返回哪些表

select * from tab

select * from all_tables

我想知道两者的区别。

【问题讨论】:

    标签: sql oracle oracle10g oracle11g


    【解决方案1】:

    tab 是一个永远不应使用的古老数据字典表。它的存在只是为了为可能在几十年前编写的脚本提供向后兼容性。 tab 不会随着新对象类型和新功能的添加而更新。

    • all_tables 为您提供有关您有权访问的所有表的信息。
    • tab 为您提供有关您拥有的表、视图和同义词的信息(使其更类似于 user_tablesuser_synonymsuser_views 等视图)。但是,它不知道回收站之类的东西,因此tab 将向您显示回收站中名称为BIN$+K4PlriXSGetpagyHCvBGA==$0 的所有表。实际上,至少自 Oracle 7 天以来添加的任何对象类型都可能会给旧数据字典表(如 tab)带来问题。

    【讨论】:

    • 但是为什么在我的测试中select tname from tab where tabtype='TABLE' order by tname (40-60ms) 比select table_name from user_tables order by table_name (170-190ms) 快 3 倍或 4 倍(Windows 上的 12c,使用自定义命令行客户端)?
    • @ddevienne - 我没有浏览这两个视图的底层代码,但我认为考虑自 Oracle 7 天以来数据字典中发生的所有变化比忽略它。例如,过滤掉回收站中的东西会增加时间,但会改善结果。如果您经常访问数据字典以致 user_tables 对您来说不够快,我猜您做错了什么。
    猜你喜欢
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2014-04-16
    • 2013-10-09
    相关资源
    最近更新 更多