请问oracle数据库中 怎么查询假设A用户下的所有表表名及表中的索引名称及索引字段呢?

请问oracle数据库中 怎么查询假设A用户下的所有表表名及表中的索引名称及索引字段呢?,第1张

查询所有表名(以用户HR为例):

1·登录所要查询的用户然后指令:select table_name from user_tables ;

2·登录系统管理员用户然后指令:select table_name from dba_tables where owner='HR';

查询所有索引(以用户hr为例):

登录所要查询的用户然后指令:select user_indexesindex_name,user_indexesindex_type,user_indexestable_owner from user_indexes ;

·登录系统管理员用户然后指令:SELECT index_name ,index_type ,owner FROM dba_indexes WHERE owner='HR' AND Table_owner='EMPLOYEES';

oracle对于数据库中的表信息,存储在系统表中。查询已创建好的表索引,可通过相应的sql语句到相应的表中进行快捷的查询:
1
根据表名,查询一张表的索引
select

from
user_indexes
where
table_name=upper('表名');
2
根据索引号,查询表索引字段
select

from
user_ind_columns
where
index_name=('索引名');
3根据索引名,查询创建索引的语句
select
dbms_metadataget_ddl('index','索引名',
['用户名'])
from
dual
;
--['用户名']可省,默认为登录用户
ps:dbms_metadataget_ddl还可以得到建表语句,如:
select
dbms_metadataget_ddl('table','表名',
['用户名'])
from
dual
;
//取单个表的建表语句,['用户名']可不输入,默认为登录用户
select
dbms_metadataget_ddl('table',utable_name)
from
user_tables
u;
//取用户下所有表的建表语句
当然,也可以用pl/sql
developer工具来查看相关的表的各种信息。

select /+ index(B2C_PAY_TRANFLOW B2C_PAY_TRANFLOW_IDX4)/ from B2C_PAY_TRANFLOW
WHERE PTF_MER_CODE = '123789'
AND PTF_ORDER_NUM = '20130116165831979'
试试看,你前面表名写的不对吧,
可以给表指定别名的,如下:
select /+ index(t,B2C_PAY_TRANFLOW_IDX4)/ from B2C_PAY_TRANFLOW t
WHERE PTF_MER_CODE = '123789'
AND PTF_ORDER_NUM = '20130116165831979'

1、通过PL/SQL可以直接查看某表是否建索引
2、通过SQL查询select status,T from user_indexes T
where table_name='表名'


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12671937.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存