查看oracle索引
oracle查询表索引语句

oracle查询表索引语句Oracle是一种关系型数据库管理系统,可以使用SQL语言进行数据查询和操作。
在Oracle中,索引是一种特殊的数据库对象,它可以提高查询效率和数据访问速度。
索引可以根据一个或多个列值进行排序,并且可以通过索引来快速定位到满足查询条件的数据行。
下面列举了一些常用的Oracle查询表索引的语句。
1. 查看表的索引信息:```sqlSELECT index_name, table_name, column_nameFROM all_ind_columnsWHERE table_name = '表名';```这个语句可以查询指定表的所有索引,包括索引名称、索引所在的表以及索引列。
2. 查看表的主键索引:```sqlSELECT constraint_name, column_nameFROM all_cons_columnsWHERE table_name = '表名'AND constraint_name = 'PK_表名';```这个语句可以查询指定表的主键索引,包括主键约束名称以及主键列。
3. 查看表的唯一索引:```sqlSELECT index_name, table_name, column_nameFROM all_ind_columnsWHERE table_name = '表名'AND uniqueness = 'UNIQUE';```这个语句可以查询指定表的唯一索引,包括索引名称、索引所在的表以及索引列。
4. 查看表的非唯一索引:```sqlSELECT index_name, table_name, column_nameFROM all_ind_columnsWHERE table_name = '表名'AND uniqueness = 'NONUNIQUE';```这个语句可以查询指定表的非唯一索引,包括索引名称、索引所在的表以及索引列。
oracle 全文检索 索引类型

oracle 全文检索索引类型Oracle全文检索是指在Oracle数据库中对文本数据进行搜索和查询,提供全文搜索功能。
全文检索的目标是对存储在数据库中的文本数据进行有效的搜索、查询和过滤,以提供更精确、更快速的搜索结果。
在Oracle中,全文索引类型主要包括CONTEXT索引和INTERMEDIA索引。
下面将对这两种索引类型进行详细介绍。
1. CONTEXT索引:CONTEXT索引是Oracle提供的一种基于全文检索的索引类型。
它使用了Oracle Text功能,可以在数据库中创建和管理全文索引。
CONTEXT索引可以用于检索包含关键字的文本列,对表中的文本数据进行全文搜索和查询。
其主要特点包括:- 支持多种语言:CONTEXT索引支持多种语言的全文搜索,可以根据不同语言的特点进行分词和搜索。
- 精确度和性能:CONTEXT索引提供了各种文本搜索的功能和选项,可以根据实际需求进行设置,兼顾搜索结果的准确性和搜索性能的要求。
- 可扩展性:CONTEXT索引可以随着文本数据的增长而自动维护和更新,保持索引的实时性。
- 高级搜索功能:CONTEXT索引支持通配符和模糊搜索等高级搜索功能,可以更灵活地匹配和检索文本数据。
- 可调节分词器:可以根据需要选择不同的分词器,以适应不同的语言和文本特点。
2. INTERMEDIA索引:INTERMEDIA索引是Oracle提供的另一种全文检索索引类型,它可以用于在Oracle数据库中进行多媒体数据的全文检索和查询。
INTERMEDIA索引主要用于存储和管理多媒体数据,如图像、音频、视频等,对这些多媒体数据进行全文搜索和查询。
其主要特点包括:- 多媒体数据支持:INTERMEDIA索引可以用于存储和管理各种多媒体数据,不仅仅是文本数据,可以对图像、音频、视频等进行全文搜索和查询。
- 内置分析器:INTERMEDIA索引提供了内置的分析器和语义解析器,可以理解和分析多媒体数据的结构和内容,从而提供更准确的搜索结果。
Oracle下查看索引的语句

Oracle下查看索引的语句
1. 查询⼀张表⾥⾯索引
select*from user_indexes where table_name=upper('bills');
2. 查询被索引字段
select*from user_ind_columns where index_name=('in_bills');
3. 给某⼀字段创建索引
create index in_bills on bills(account_id);
如果您认为这篇⽂章还不错或者有所收获,您可以通过右边的“打赏”功能打赏我⼀杯咖啡【物质⽀持】,也可以点击⽂章下⽅“推荐”按钮【精神⽀持】,您的“推荐”将是我最⼤的写作动⼒!
必须在⽂章页⾯明显位置给出作者和原⽂连接,凡是转载于本⼈的⽂章,不能设置打赏功能,如有特殊需求请与本⼈联系!
欢迎各位转载,但是未经作者本⼈同意,转载⽂章之后必须在⽂章页⾯明显位置给出作者和原⽂连接。
oracle索引序列查询分组排序连接视图等

在达到最大值后停止生成下一个值 指定第一个序号从 指定序号之间的间隔为 表示序列的最大值为 表示序列的最小值为 1010 2000 开始 10 指定内存中预先分配的序号数
使用DROP SEQUENCE语句删除序列
SQL> DROP SEQUENCE toys_seq;
数据库的查询
SELECT 语句的格式 - SELECT[predicate]{*|table.*|[table.]field[,[table.]field2[,... ]]} [AS alias1 [,alias2[,...]]] FROM tableexpression [,...] [WHERE...] [GROUP BY...] [HAVING...]
本章目标
索引 序列 聚合函数 排序 分组 连接查询
视图
索引
什么是做引?
- 一种用户提升查询效率的数据库对象
- 通过快速定位数据的方法,减少磁盘I/O操作 - 索引信息与表独立存放 - oracle数据库自动使用和维护做引
索引分类
- 唯一性索引 - 非唯一性索引
创建索引的方式
×
聚合函数-2
MAX、MIN SELECT AVG(SCore) AS 平均成绩, MAX (Score) AS 最高分, MIN (Score) AS 最低分 From Score WHERE Score >=60
创建索引的原则
Байду номын сангаас 下列情况下可以创建索引
查看oracle索引

用user_indexes和user_ind_columns系统表查看已经存在的索引对于系统中已经存在的索引我们可以通过以下的两个系统视图(user_indexes和user_ind_columns)来查看其具体内容,例如是属于那个表,哪个列和,具体有些什么参数等等。
user_indexes: 系统视图存放是索引的名称以及该索引是否是唯一索引等信息。
user_ind_column: 系统视图存放的是索引名称,对应的表和列等。
查看索引个数和类别:SQL> select * from user_indexes where table='表名' ;查看索引被索引的字段:SQL> select * from user_ind_columns where index_name=upper('&index_name');我们可以通过类似下面的语句来查看一个表的索引的基本情况:select user_ind_columns.index_name,user_ind_columns.column_name,user_ind_columns.column_position,user_indexes.uniquenessfrom user_ind_columns,user_indexeswhere user_ind_columns.index_name = user_indexes.index_nameand user_ind_columns.table_name = ‘你想要查询的表名字’;通过这条SQL语句我们能查看到一个表的具体的索引的情况,如果你想对这表的索引进行进一步的探究你应该到user_indexes中去具体的看以下这个索引的基本情况。
完整性约束DBA_CONSTRAINTS、ALL_CONSTRAINTS和USER_CONSTRAINST 显示有关约束的一般信息。
常用oracle数据库命令

常用oracle数据库命令
1. 启动Oracle数据库
$ sqlplus /nolog
SQL> connect / as sysdba
SQL> startup
3. 创建表空间
创建表空间的命令是:
SQL> create tablespace 表空间名 datafile '路径名' size 大小;
6. 创建用户
7. 删除用户
删除用户的命令是:
8. 授权用户
SQL> grant 权限 to 用户名;
9. 撤销用户的权限
11. 查看表结构
查看表结构的命令是:
SQL> desc 表名;
SQL> create table 表名 (列名数据类型, 列名数据类型, …);
13. 删除表
14. 插入数据
插入数据的命令是:
SQL> update 表名 set 列名=新值 where 某条件;
18. 创建索引
20. 查看索引
21. 查询相关信息
查询相关信息的命令是:
SQL> select * from v$session; -- 查看会话 22. 查看数据库版本
24. 备份数据库
$ exp 用户名/密码 file=备份文件路径备注:以上命令均需要在Oracle登录后进行。
oracle 查询索引语句

oracle 查询索引语句一、查询索引定义1. 查询Oracle数据库中所有的索引```SELECT index_name, table_name FROM all_indexes;```2. 查询指定表中的所有索引```SELECT index_name FROM all_indexes WHERE table_name = '表名';```3. 查询指定索引的定义```SELECT index_name, table_name, column_name FROM all_ind_columns WHERE index_name = '索引名';```4. 查询索引的类型```SELECT index_name, table_name, index_type FROM all_indexes;```5. 查询索引的存储方式```SELECT index_name, table_name, index_type, index_subpartition_name, index_partition_name FROM all_indexes;```二、查询索引状态与统计信息1. 查询索引的状态(有效/无效)```SELECT index_name, status FROM all_indexes;```2. 查询索引的使用情况(最后一次访问时间、读取次数等)```SELECT index_name, last_analyzed, num_rows, leaf_blocks, distinct_keys, clustering_factor FROM all_indexes;```3. 查询索引的大小```SELECT index_name, table_name, index_type, ROUND(bytes/1024/1024, 2) AS size_mb FROM dba_segments WHERE segment_type = 'INDEX';```4. 查询索引的碎片化情况```SELECT index_name, table_name, index_type, blevel, leaf_blocks, distinct_keys, clustering_factor FROM all_indexes; ```5. 查询索引的使用情况(是否被频繁访问)```SELECT index_name, table_name, user_reads, user_updates FROM all_indexes;```三、查询索引的相关约束1. 查询索引所属的表的主键约束```SELECT index_name, table_name FROM all_indexes WHERE index_type = 'NORMAL' AND uniqueness = 'UNIQUE';```2. 查询索引所属的表的外键约束```SELECT index_name, table_name FROM all_indexes WHERE index_type = 'NORMAL' AND uniqueness = 'NONUNIQUE';```3. 查询索引所属的表的唯一约束```SELECT index_name, table_name FROM all_indexes WHERE index_type = 'NORMAL' AND uniqueness = 'NONUNIQUE';```4. 查询索引所属的表的检查约束```SELECT index_name, table_name FROM all_indexes WHERE index_type = 'NORMAL' AND uniqueness = 'NONUNIQUE';```5. 查询索引所属的表的默认值约束```SELECT index_name, table_name FROM all_indexes WHERE index_type = 'NORMAL' AND uniqueness = 'NONUNIQUE';```四、查询索引的相关操作1. 查询索引的创建语句```SELECT dbms_metadata.get_ddl('INDEX', '索引名') FROM dual; ```2. 查询索引的重建语句```SELECT 'ALTER INDEX ' || index_name || ' REBUILD;' FROM all_indexes;```3. 查询索引的重命名语句```SELECT 'ALTER INDEX ' || index_name || ' RENAME TO 新索引名;' FROM all_indexes;```4. 查询索引的删除语句```SELECT 'DROP INDEX ' || index_name || ';' FROM all_indexes;```5. 查询索引的禁用语句```SELECT 'ALTER INDEX ' || index_name || ' UNUSABLE;' FROM all_indexes;```五、查询索引的相关性能优化1. 查询索引是否需要重新构建```SELECT index_name, table_name, last_analyzed FROM all_indexes WHERE last_analyzed < SYSDATE - 30;```2. 查询未使用的索引```SELECT index_name, table_name FROM all_indexes WHERE status = 'VALID' AND (user_reads = 0 OR user_updates = 0); ```3. 查询索引碎片化严重的情况```SELECT index_name, table_name, blevel, leaf_blocks, distinct_keys, clustering_factor FROM all_indexes WHERE blevel > 3;```4. 查询索引的大小是否过大```SELECT index_name, table_name, index_type, ROUND(bytes/1024/1024, 2) AS size_mb FROM dba_segments WHERE segment_type = 'INDEX' AND bytes/1024/1024 > 100;```5. 查询索引的选择性是否低```SELECT index_name, table_name, distinct_keys, num_rows, (distinct_keys/num_rows) AS selectivity FROM all_indexes WHERE selectivity < 0.1;```六、查询索引的相关性能统计1. 查询索引的读取次数与更新次数```SELECT index_name, table_name, user_reads, user_updates FROM all_indexes;```2. 查询索引的平均访问时间```SELECT index_name, table_name, blevel, leaf_blocks, distinct_keys, clustering_factor, num_rows, (leaf_blocks/clustering_factor) AS avg_access_time FROM all_indexes;```3. 查询索引的存储效率```SELECT index_name, table_name, blevel, leaf_blocks,distinct_keys, clustering_factor, (leaf_blocks/clustering_factor) AS storage_efficiency FROM all_indexes;```4. 查询索引的选择性```SELECT index_name, table_name, distinct_keys, num_rows, (distinct_keys/num_rows) AS selectivity FROM all_indexes;```5. 查询索引的碎片率```SELECT index_name, table_name, blevel, leaf_blocks, distinct_keys, clustering_factor, (leaf_blocks/clustering_factor) AS fragmentation FROM all_indexes;```以上是关于Oracle查询索引的一些常用语句,通过这些语句可以方便地查询索引的定义、状态、统计信息以及进行相关操作和性能优化。
Oracle第6章视图和索引操作

教
量(g_Number)信息,可以创建一个“热点”商品的视
师
图。
演
示
CREATE OR REPLACE VIEW SCOTT.vw_HotGoods
讲
AS
解
SELECT g_ID AS 商品号, g_Name AS 商品名称, t_ID
AS 类别号, g_Price AS 价格, g_Discount
案例完成步骤
(6)强制创建视图
正常情况下,如果基表不存在,创建视图就会失败。但是可
以使用FORCE选项强制创建视图(前提是创建视图的语句
没有语法错误),但此时该视图处于失效状态。
教
【例2-6】创建并验证基于Test表的强制视图
师 演
(a)在Test表不存在的情况下,创建基于该表的强制视图
示
vw_TestForce。
示
重定义时没有使用该选项,则以前的此选项将自动删除。
讲
2.使用PL/SQL修改视图
解
(1)重命名视图
【例2-7】重命名用户方案SCOTT的视图
vw_MaxPriceGoods为vw_MaxPrice。
rename vw_MaxPriceGoods TO vw_MaxPrice;
Oracle数据库管理与应用实例教程
师
演
图。
示
CREATE OR REPLACE VIEW
讲
解
SCOTT.vw_MaxPriceGoods
AS
SELECT t_ID, Max(g_Price) AS MaxPrice
FROM SCOTT.Goods
GROUP BY t_ID
Oracle数据库管理与应用实例教程
oracle重建索引的方法

oracle重建索引的方法在Oracle 数据库中,重建索引是一种优化数据库性能的方法之一。
索引的重建可以帮助数据库优化查询性能,减少碎片,提高查询效率。
以下是在Oracle 中重建索引的一般步骤:1. 查看索引状态:在执行重建索引之前,你可以查看索引的状态,以确定是否需要重建。
使用以下查询来获取索引的统计信息:```sqlSELECT index_name, table_name, table_owner, statusFROM dba_indexesWHERE table_owner = 'your_table_owner' AND table_name = 'your_table_name';```这将返回表中所有索引的信息,包括索引名称、表名称、所有者和状态等。
2. 禁用索引(可选):在进行索引重建之前,你可以选择禁用索引。
禁用索引可能会加快索引重建的过程。
使用以下语句禁用索引:```sqlALTER INDEX index_name NOPARALLEL;```在此语句中,`index_name` 是要禁用的索引名称。
3. 重建索引:使用`ALTER INDEX` 语句来重建索引。
重建索引的语法如下:```sqlALTER INDEX index_name REBUILD;```在此语句中,`index_name` 是要重建的索引名称。
4. 启用索引(可选):如果在第2步中禁用了索引,可以使用以下语句启用索引:```sqlALTER INDEX index_name PARALLEL;```在此语句中,`index_name` 是要启用的索引名称。
请注意,重建索引可能会导致数据库锁定和性能影响,因此在生产环境中建议在低负载时执行。
此外,重建索引的必要性取决于数据库的使用情况,有时候并不是每个索引都需要经常重建。
最好在进行此类维护任务之前,了解数据库性能和索引的使用情况,以确保执行这些操作是有益的。
oracle失效索引语句

oracle失效索引语句Oracle是一种关系型数据库管理系统,在数据库中创建索引是一种优化数据库性能的重要方法。
然而,在实际开发过程中,可能会出现索引失效的情况,这时需要使用失效索引语句来解决问题。
下面是解决索引失效的步骤:1. 确认索引失效当数据库查询变慢时,需要首先确认是否是索引失效导致的。
可以使用Oracle提供的工具来监控数据库性能,查看是否有性能瓶颈。
如果确认是索引失效导致的,需要进行下一步操作。
2. 查看索引信息使用以下语句查看索引信息:```SELECT index_name, table_name, uniqueness FROM user_indexes WHERE table_name = '<表名>';```其中,index_name表示索引名,table_name表示表名,uniqueness表示索引是否唯一。
3. 查看执行计划使用以下语句查看SQL语句的执行计划:```EXPLAIN PLAN FOR <SQL语句>;SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);```执行计划可以帮助确认是哪个索引出现了问题,以及查询时使用了哪些索引。
4. 重新生成索引如果是因为索引空间不足或者索引结构不合理导致的索引失效,可以尝试重新生成索引。
可以使用以下语句重新生成索引:```ALTER INDEX <索引名> REBUILD;```5. 重新统计表和索引如果是因为索引统计信息不准确导致的索引失效,可以使用以下语句重新统计表和索引:```EXEC DBMS_STATS.GATHER_TABLE_STATS('<表名>', CASCADE=>TRUE);```这个语句会同时重新统计表和索引的信息,以便优化查询效率。
6. 重新设计索引如果以上方法无法解决索引失效问题,可以考虑重新设计索引。
oracle表空间索引存储与碎片检查

Oracle 表空间索引存储与碎片检查Oracle 表空间索引存储检查,Oracle 表空间索引碎片查看,包括查看系统表中的用户索引、索引的存储情况检查、索引的选择性、确定索引的实际碎片。
1、查看系统表中的用户索引在 Oracle 中,SYSTEM 表是安装数据库时自动建立的,它包含数据库的全部数据字典Oracle 表空间索引存储检查,Oracle 表空间索引碎片查看,包括查看系统表中的用户索引、索引的存储情况检查、索引的选择性、确定索引的实际碎片。
1、查看系统表中的用户索引在 Oracle 中,SYSTEM 表是安装数据库时自动建立的,它包含数据库的全部数据字典,存储过程、包、函数和触发器的定义以及系统回滚段。
一般来说,应该尽量避免在 SYSTEM 表中存储非 SYSTEM 用户的对象。
因为这样会带来数据库维护和管理的很多问题。
一旦 SYSTEM 表损坏了,只能重新生成数据库。
我们可以用下面的语句来检查在 SYSTEM 表内有没有其他用户的索引存在。
以下为引用内容:SELECT *FROM dba_indexesWHERE tablespace_name = 'SYSTEM' AND owner NOT IN ('SYS', 'SYSTEM')2、索引的存储情况检查Oracle 为数据库中的所有数据分配逻辑结构空间。
数据库空间的单位是block 、extent 和 segment 。
Block :Oracle 使用和分配的最小存储单位。
由数据库建立时设置的DB_BLOCK_SIZE 决定的。
一旦数据库生成了,数据块的大小不能改变。
要想改变只能重新建立数据库。
Extent :由一组连续的 block 组成的。
一个或多个 extent 组成一个segment 。
当一个 segment 中的所有空间被用完时,Oracle 为它分配一个新的extent 。
oracle 全文检索 索引类型

oracle 全文检索索引类型
Oracle全文检索索引类型包括:
1. 简单全文索引(Basic Text Index):基于指定的列创建的索引,适用于常规的全文搜索需求。
它将文本内容分解为单词,存储在索引中,并提供搜索、排序和过滤功能。
2. 范围索引(Range Index):针对XML数据类型的索引,用
于对XML文档的路径进行全文搜索。
它支持基于XSLT风格
模式的查询和范围搜索。
3. 空间索引(Spatial Index):用于支持基于空间关系的查询,例如地理位置或几何形状的搜索。
它可以加速地理信息系统(GIS)或位置相关应用的查询操作。
4. 多列全文索引(Multi-Column Text Index):可以同时对多
个列中的文本内容进行索引和搜索。
这样可以更灵活地进行多条件的全文搜索操作。
这些索引类型可以根据具体的需求进行选用和配置,提供更高效和准确的全文检索功能。
Oracle查找表的主键,外键,唯一性约束,索引

Oracle:查找表的主键,外键,唯一性约束,索引1、查找表的所有索引(包括索引名,类型,构成列):select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name = i.table_name and t.table_name = 要查询的表2、查找表的主键(包括名称,构成列):select cu.* from user_cons_columns cu, user_constraints au where cu.constraint_name =au.constraint_name and au.constraint_type = 'P' and au.table_name = 要查询的表3、查找表的唯一性约束(包括名称,构成列):select column_name from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'U' and au.table_name = 要查询的表4、查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询):select * from user_constraints c where c.constraint_type = 'R' and c.table_name = 要查询的表查询外键约束的列名:select * from user_cons_columns cl where cl.constraint_name = 外键名称查询引用表的键的列名:select * from user_cons_columns cl where cl.constraint_name = 外键引用表的键名5、查询表的所有列及其属性select t.*,MENTS from user_tab_columns t,user_col_comments c where t.table_name = c.table_name and t.column_name = c.column_name and t.table_name = 要查询的表。
Oracle查询指定索引提高查询效率【转】

Oracle查询指定索引提⾼查询效率【转】Oracle查询指定索引提⾼查询效率 Oracle查询指定索引提⾼查询效率 ⼀个1600万数据表--短信上⾏表TBL_SMS_MO 结构: CREATE TABLE TBL_SMS_MO ( SMS_ID NUMBER, MO_ID VARCHAR2(50), MOBILE VARCHAR2(11), SPNUMBER VARCHAR2(20), MESSAGE VARCHAR2(150), TRADE_CODE VARCHAR2(20), LINK_ID VARCHAR2(50), GATEWAY_ID NUMBER, GATEWAY_PORT NUMBER, MO_TIME DATE DEFAULT SYSDATE ); CREATE INDEX IDX_MO_DATE ON TBL_SMS_MO (MO_TIME) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 1M NEXT 1M MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0 ); CREATE INDEX IDX_MO_MOBILE ON TBL_SMS_MO (MOBILE) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 64K NEXT 1M MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0 ); 问题:从表中查询某时间段内某⼿机发送的短消息,如下SQL语句: SELECT MOBILE,MESSAGE,TRADE_CODE,MO_TIME FROM TBL_SMS_MO WHERE MOBILE='130XXXXXXXX' AND MO_TIME BETWEEN TO_DATE('2006-04-01','YYYY-MM-DD HH24:MI:SS') AND TO_DATE('2006-04-07','YYYY-MM-DDHH24:MI:SS') ORDER BY MO_TIME DESC 返回结果⼤约需要10分钟,应⽤于⽹页查询,简直难以忍受。
03oracle索引、序列、查询分组、排序、连接、视图等资料

思考:排序中的字段,可以使用表达式吗? —— 如果不可以,请说明原因; —— 如果可以,请举例说明;
问题
成绩表中存储了所有学员的成绩,我想知道: 学员的总成绩、平均成绩、有成绩的学员总共有多少名 怎么办?
聚合函数-1
SUM SELECT SUM(ytd_sales) FROM titles WHERE type = 'business'
SQL> INSERT INTO toys (toyid, toyname, toyprice) VALUES ( toys_seq.NEXTVAL, ’MAGIC PENCIL’, 75);
指定序列的下一个值
SQL> SELECT toys_seq.CURRVAL FROM dual;
检索序列的当前值
指 表 在定示达指第序到定一号列最内个之的大存序间最值中号 的 大 小 后预从 间 值 停先隔 为 止分10为 生配21开0成的10始00下序一号个数值
访问序列
通过序列的伪列来访问序列的值
NEXTVAL 返回序列的下一个值 CURRVAL 返回序列的当前值
SQL> INSERT INTO toys (toyid, toyname, toyprice) VALUES ( toys_seq.NEXTVAL, ‘TWENTY’, 25);
BETWEEN...AND 运算符
expr[Not]BETWEEN value1 AND value2
LIKE 操作数
expression LIKE "pattern" expression
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对于系统中已经存在的索引我们可以通过以下的两个系统视图(user_indexes和user_ind_columns)来查看其具体内容,例如是属于那个表,哪个列和,具体有些什么参数等等。
user_indexes: 系统视图存放是索引的名称以及该索引是否是唯一索引等信息。
and b.table_name=d.table_name
数据字典表列说明:
desc user_constraints
Name Comments
DEFERRABLE Is the constraint deferrable - DEFERRABLE or NOT DEFERRABLE
DEFERRED Is the constraint deferred by default - DEFERRED or IMMEDIATE
VALIDATED Was this constraint system validated? - VALIDATED or NOT VALIDATED
GENERATED Was the constraint name system generated? - GENERATED NAME or USER NAME
substr(c.column_name,1,127) 外键列,
b.owner 主键拥有者,
b.table_name 主键表,
substr(d.column_name,1,127) 主键列
from
user_constraints a,
user_constraints b,
BAD Creating this constraint should give ORA-02436. Rewrite it before 2000 AD.
user_ind_column: 系统视图存放的是QL> select * from user_indexes where table='表名' ;
查看索引被索引的字段:
SQL> select * from user_ind_columns where index_name=upper('&index_name');
user_cons_columns c,
user_cons_columns d
where
a.r_constraint_name=b.constraint_name
and a.constraint_type='R'
and b.constraint_type='P'
and a.r_owner=b.owner
user_cons_columns: 是表约束字段的视图,说明表中的和约束相关的列参与了哪些约束。这些约束有主键约束,外键约束,索引约束.
两者可以通过(owner,constraint_name,table_name)关联:
select
a.owner 外键拥有者,
a.table_name 外键表,
USER_CONS_COLUMNS
user_constraints 和 user_cons_columns表得作用及其联系
user_constraints: 是表约束的视图,描述的是约束类型(constraint_type)是什么,属于哪些表(table_name),如果约束的类型为R(外键)的话,那么r_constraint_name字段存放的就是被引用主表中的主键约束名。
RELY If set, this flag will be used in optimizer
完整性约束
DBA_CONSTRAINTS、ALL_CONSTRAINTS和USER_CONSTRAINST 显示有关约束的一般信息。
DBA_CONS_COLUMNS、ALL_CONS_COLUMNS和USER_CONS_COLUMNS 显示有关列的相关约束的一般信息。
and a.constraint_name=c.constraint_name
and b.constraint_name=d.constraint_name
and a.owner=c.owner
and a.table_name=c.table_name
and b.owner=d.owner
LAST_CHANGE The date when this column was last enabled or disabled
INVALID
VIEW_RELATED
ALL_CONS_COLUMNS 视图和DBA_CONS_COLUMNS 视图与USER_CONS_COLUMNS有相同的列定义。
ALL_CONS_COLUMNS 视图能够显示用户可以访问的所有表上约束的列信息,而不管所有者是谁。
DBA_CONS_COLUMNS 视图列出了整个数据库的列级约束信息。
TABLE_NAME Name associated with table with constraint definition
SEARCH_CONDITION Text of search condition for table check
DELETE_RULE The delete rule for a referential constraint
STATUS Enforcement status of constraint - ENABLED or DISABLED
R_OWNER Owner of table used in referential constraint
R_CONSTRAINT_NAME Name of unique constraint definition for referenced table
from user_ind_columns,user_indexes
where user_ind_columns.index_name = user_indexes.index_name
and user_ind_columns.table_name = ‘你想要查询的表名字’;
通过这条SQL语句我们能查看到一个表的具体的索引的情况,如果你想对这表的索引进行进一步的探究你应该到user_indexes中去具体的看以下这个索引的基本情况。
CONSTRAINT_NAME Name associated with constraint definition
CONSTRAINT_TYPE Type of constraint definition
INDEX_OWNER The owner of the index used by the constraint
----------------- ---------------------------------------------------------------------------
OWNER Owner of the table
INDEX_NAME The index used by the constraint
我们可以通过类似下面的语句来查看一个表的索引的基本情况:
select user_ind_columns.index_name,user_ind_columns.column_name,
user_ind_columns.column_position,user_indexes.uniqueness