查询所有表名(以用户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='表名'
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)