【发布时间】:2013-01-12 09:37:29
【问题描述】:
使用(在 oracle 中)返回哪些表
select * from tab
和
select * from all_tables
我想知道两者的区别。
【问题讨论】:
标签: sql oracle oracle10g oracle11g
使用(在 oracle 中)返回哪些表
select * from tab
和
select * from all_tables
我想知道两者的区别。
【问题讨论】:
标签: sql oracle oracle10g oracle11g
tab 是一个永远不应使用的古老数据字典表。它的存在只是为了为可能在几十年前编写的脚本提供向后兼容性。 tab 不会随着新对象类型和新功能的添加而更新。
all_tables 为您提供有关您有权访问的所有表的信息。tab 为您提供有关您拥有的表、视图和同义词的信息(使其更类似于 user_tables、user_synonyms 和 user_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,使用自定义命令行客户端)?
user_tables 对您来说不够快,我猜您做错了什么。