`

oracle_索引

 
阅读更多

1.查看Oracle当前用户下的信息(用户,表视图,索引,表空间,同义词,存储过程函数,约束条件

0、表空间

  SQL>select username,default_tablespace from user_users;

  查看当前用户的角色

  SQL>select * from user_role_privs;

  查看当前用户的系统权限和表级权限

  SQL>select * from user_sys_privs;

  SQL>select * from user_tab_privs;

  查看用户下所有的表

  SQL>select * from user_tables;

  1、用户

  查看当前用户的缺省表空间

  SQL>select username,default_tablespace from user_users;

  查看当前用户的角色

  SQL>select * from user_role_privs;

  查看当前用户的系统权限和表级权限

  SQL>select * from user_sys_privs;

  SQL>select * from user_tab_privs;

  显示当前会话所具有的权限

  SQL>select * from session_privs;

  显示指定用户所具有的系统权限

  SQL>select * from dba_sys_privs where grantee='GAME';

  2、表

  查看用户下所有的表

  SQL>select * from user_tables;

SELECT * FROM ALL_TABLES;

  查看名称包含log字符的表

  SQL>select object_name,object_id from user_objects

  where instr(object_name,'LOG')>0;

  查看某表的创建时间

  SQL>select object_name,created from user_objects where object_name=upper('&table_name');

  查看某表的大小

  SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments

  where segment_name=upper('&table_name');

  查看放在ORACLE的内存区里的表

  SQL>select table_name,cache from user_tables where instr(cache,'Y')>0;

  3、索引

  查看索引个数和类别

  SQL>select index_name,index_type,table_name from user_indexes order by table_name;

  查看索引被索引的字段

  SQL>select * from user_ind_columns where index_name=upper('&index_name');

  查看索引的大小

  SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments

  where segment_name=upper('&index_name');

  4、序列号

  查看序列号,last_number是当前值

  SQL>select * from user_sequences;

  5、视图

  查看视图的名称

  SQL>select view_name from user_views;

  查看创建视图的select语句

  SQL>set view_name,text_length from user_views;

  SQL>set long 2000; 说明:可以根据视图的text_length值设定set long 的大小

  SQL>select text from user_views where view_name=upper('&view_name');

  6、同义词

  查看同义词的名称

  SQL>select * from user_synonyms;

SELECT * FROM ALL_SYSNONYMS;

  7、约束条件

  查看某表的约束条件

  SQL>select constraint_name, constraint_type,search_condition, r_constraint_name

  from user_constraints where table_name = upper('&table_name');

  SQL>select c.constraint_name,c.constraint_type,cc.column_name

  from user_constraints c,user_cons_columns cc

  where c.owner = upper('&table_owner') and c.table_name = upper('&table_name')

  and c.owner = cc.owner and c.constraint_name = cc.constraint_name

  order by cc.position;

  8、存储函数和过程

  查看函数和过程的状态

  SQL>select object_name,status from user_objects where object_type='FUNCTION';

  SQL>select object_name,status from user_objects where object_type='PROCEDURE';

  查看函数和过程的源代码

  SQL>select text from all_source where owner=user and name=upper('&plsql_name');

 

2.创建索引 CREATE INDEX

CREATE INDEX -- 定义一个新索引
Synopsis
CREATE [ UNIQUE ] INDEX name ON table [ USING method ]
    ( { column | ( expression ) } [ opclass ] [, ...] )
    [ TABLESPACE tablespace ]
    [ WHERE predicate ]
描述
CREATE INDEX 在指定的表上构造一个名为 index_name 的索引。索引主要用来提高数据库性能。但是如果不恰当的使用将导致性能的下降。

索引的键字字段是以字段名的方式声明的,或者是可选的写在一个圆括弧里面的表达式。 如果索引方式支持多个字段索引,那么我们也可以声明多个字段。

一个索引字段可以是一个使用表的行的一个或多个字段的数值进行计算的表达式。 整个特性可用于获取对基本数据某种变形的快速访问。 比如,一个在 upper(col) 上的函数索引将允许子句 WHERE upper(col) = 'JIM' 使用索引。

PostgreSQL 为从索引提供 B-tree,R-tree,hash(散列) 和 GiST 索引方法。 B-tree 索引方法是一个 Lehman-Yao 高并发 B-trees 的实 现。R-tree 索引方法用 Guttman 的二次分裂算法实现了标准的 R-trees。 hash(散列)索引方法是 Litwin 的线性散列的一个实现。 用户也可以定义它们自己的索引方法,但这个工作相当复杂。

如果出现了 WHERE 子句,则创建一个部分索引。 部分索引是一个只包含表的一部分记录的索引,通常是该表中比其它部分数据更有用的部分。 比如,如果你有一个表,里面包含已上账和未上账的定单, 未上账的定单只占表的一小部分而且这部分是最常用的部分, 那么你就可以通过只在这个部分创建一个索引来改善性能。 另外一个可能的用途是用 WHERE 和 UNIQUE 强制一个表的某个子集的唯一性。 参阅 Section 11.7 探讨更多信息。

在 WHERE 子句里用的表达式只能引用下层表的字段,但是它可以使用所有字段,而不仅仅是被索引的字段。 目前,子查询和聚集表达式也不能出现在WHERE里。

索引定义里的所有函数和操作符都必须是immutable,(不变的)也就是说, 它们的结果必须只能依赖于它们的输入参数,而决不能依赖任何外部的影响(比如另外一个表的内容或者当前时间)。 这个约束确保该索引的行为是定义完整的。要在一个索引上使用用户定义函数,请记住在你创建它的时候把它标记为immutable的函数。
参数

UNIQUE 
令系统检测当索引创建时(如果数据已经存在)和每次添加数据时表中是否有重复值。 如果插入或更新的值会导致重复的记录时将生成一个错误。

name 
要创建的索引名。这里不能包含模式名; 索引总是在同一个模式中作为其父表创建的。

table 
要索引的表名(可能有模式修饰)。

method 
用于索引的方法的名字。可选的名字是 btree, hash,rtree,和 gist。缺省方法是 btree。

column 
表的列/字段名。

expression 
一个基于该表的一个或多个字段的表达式。 这个表达式通常必须带着圆括弧包围写出,如语法中显示那样。 不过,如果表达式有函数调用的形式,那么圆括弧可以省略。

opclass 
一个关联的操作符表。参阅下文获取细节。

tablespace 
创建索引所在的表空间。如果没有声明,则使用 default_tablespace 的表空间, 如果 default_tablespace 是空字串,则使用数据库的缺省表空间。

predicate 
为一个部分索引定义约束表达式。
注意
参阅 Chapter 11 获取有关何时使用索引,何时不使用索引, 以及它们哪种情况下是有用的信息。

目前,只有 B-tree 和 gist 索引方法支持多字段索引。 缺省时最多可以声明 32 个键字(这个限制可以在制作 PostgreSQL 时修改)。 目前只有 B-tree 支持唯一索引。

可以为索引的每个列/字段声明一个 操作符表。 操作符表标识将要被该索引用于该列/字段的操作符。 例如, 一个四字节整数的 B-tree 索引将使用 int4_ops 表; 这个操作符表包括四字节整数的比较函数。 实际上,该域的数据类型的缺省操作符表一般就足够了。 某些数据类型有操作符表的原因是,它们可能有多于一个的有意义的顺序。 例如,我们对复数类型排序时有可能以绝对值或者以实部。 我们可以通过为该数据类型定义两个操作符表,然后在建立索引的时候选择合适的表来实现。 有关操作符表更多的信息在 Section 11.8 和 Section 32.14 里。

使用 DROP INDEX 删除一个索引。

缺省时索引不会用于 IS NULL 子句。这种场合下使用索引的最好方法是用 IS NULL 谓词创建一个部分索引。
例子
在表films上的 title字段创建一个 B-tree 索引:

CREATE UNIQUE INDEX title_idx ON films (title);

在表 films 的字段 code 上创建一个索引, 并且让索引存在于表空间 indexspace上:

CREATE INDEX code_idx ON films(code) TABLESPACE indexspace;

兼容性
CREATE INDEX 是 PostgreSQL 语言扩展。 在 SQL92 中没有 CREATE INDEX 命令。
 

 

3.Oracle初学者入门指南-索引的作用

关于索引是什么的最简单的比喻是,索引之于表数据如同目录之于一本书。

 

通过目录的页码我们可以快速的定位一个内容,同样通过索引记录的rowid我们可以快速的定位一条数据。

 

如同目录很难针对书中每个字词一样,索引也很难针对所有字段。

 

我们通常索引最能代表章节,记录属性的内容。

 

索引并非总能带来性能提升,但是通常情况下,索引能加快访问,所以建表的时候,你一定要知道还有索引这样一类对象。

 

下面这个案例是我们绝对不应该和不想看到的。

 

今天一个部门报数据库巨慢无比,上去看了一下,抓到如下的SQL:

SQL> select sql_text

  2  from v$sqltext a

  3  where a.hash_value = (

  4  select sql_hash_value from v$session b

  5  where b.sid='&sid'

  6  )

  7  order by piece asc

  8  /

 

SQL_TEXT

----------------------------------------------------------------

select * from i_cm_power t WHERE T.SJH='13911xxxxx6'

 

检查了一下该查询访问的数据表,居然一个索引都没有:

SQL> select index_name from dba_indexes where table_name=upper('i_cm_power');

 

INDEX_NAME

------------------------------

 

没有索引意味着,即使为了获取这一条记录,Oracle也必须对5.28G的一个表进行全表扫描,如果不慢那就怪了:

SQL> col segment_name for a20

SQL> select segment_name,bytes/1024/1024/1024

     from dba_segments where segment_name=upper('i_cm_power');

 

SEGMENT_NAME         BYTES/1024/1024/1024

-------------------- --------------------

I_CM_POWER                  5.28173828125

 

创建一个索引再说:

SQL> create index idx_i_cm_power_sjh on i_cm_power(sjh);

 

Index created.

 

Elapsed: 00:20:50.73

 

SQL> col segment_name for a20

SQL> select segment_name,bytes/1024/1024 MB

  2  from dba_segments where segment_name=upper('idx_i_cm_power_sjh');

 

SEGMENT_NAME                 MB

-------------------- ----------

IDX_I_CM_POWER_SJH         1360

 

SQL>

 

无疑这个索引对于这样的简单查询是大有益处的:

 

SQL> select * from i_cm_power t WHERE T.SJH='13911xxxxx6';

 

Elapsed: 00:00:00.07

 

Execution Plan

----------------------------------------------------------

   0      SELECT STATEMENT Optimizer=CHOOSE

   1    0   TABLE ACCESS (BY INDEX ROWID) OF 'I_CM_POWER'

   2    1     INDEX (RANGE SCAN) OF 'IDX_I_CM_POWER_SJH' (NON-UNIQUE)

 

 

Statistics

----------------------------------------------------------

          0  recursive calls

          0  db block gets

          6  consistent gets

          0  physical reads

          0  redo size

       1022  bytes sent via SQL*Net to client

        503  bytes received via SQL*Net from client

          2  SQL*Net roundtrips to/from client

          0  sorts (memory)

          0  sorts (disk)

          2  rows processed

 

然而在实际中,你需要考虑更多的因素。

 

增加索引会占用更多的存储空间;索引的维护会增加数据库的负担,如果有海量的数据加载,可能会极大影响性能...

 

所以事实可能总是比你想象的更复杂,你只有知道的更多...

 

分享到:
评论

相关推荐

    实训商业源码-橙色购物中心应用程序移动个人中心页面-毕业设计.zip

    实训商业源码-橙色购物中心应用程序移动个人中心页面-毕业设计.zip

    mamba 讲解说明ppt

    关于mamba的一些内容,起源创新点等等

    全国大学生电子设计竞赛介绍(20190716151135).pdf

    电子设计竞赛相关资源

    基于机器学习的音频情感分析系统Python源码(高分项目)

    基于机器学习的音频情感分析系统Python源码(高分项目),能够从语音中识别出四种基本情感:愤怒、快乐、中性和悲伤。个人经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业,代码资料完整,下载可用。 基于机器学习的音频情感分析系统Python源码(高分项目)基于机器学习的音频情感分析系统Python源码(高分项目)基于机器学习的音频情感分析系统Python源码(高分项目)基于机器学习的音频情感分析系统Python源码(高分项目)基于机器学习的音频情感分析系统Python源码(高分项目)基于机器学习的音频情感分析系统Python源码(高分项目)基于机器学习的音频情感分析系统Python源码(高分项目)基于机器学习的音频情感分析系统Python源码(高分项目)基于机器学习的音频情感分析系统Python源码(高分项目)基于机器学习的音频情感分析系统Python源码(高分项目)基于机器学习的音频情感分析系统Python源码(高分项目)基于机器学习的音频情感分析系统Python源码(高分项目)基于机器学习的音频情感分析系统Python源码(高分项目)基于机器学习的音频情感分析系统Python源码(高分项目)基于机器学习的音频情感分析系统Python源码(高分项目)基于机器学习的音频情感分析系统Python源码(高分项目)基于机器学习的音频情感分析系统Python源码(高分项目)基于机器学习的音频情感分析系统Python源码(高分项目)基于机器学习的音频情感分析系统Python源码(高分项目)基于机器学习的音频情感分析系统Python源码(高分项目)基于机器学习的音频情感分析系统Python源码(高分项目)基于机器学习的音频情感分析系统P

    BusHound-v6.0.1

    BusHound_v6.0.1

    实训商业源码-Tudoucms跑腿同学-毕业设计.zip

    实训商业源码-Tudoucms跑腿同学-毕业设计.zip

    Post 3_ Your Channel, PRBS and the Eye.pdf

    Post 3_ Your Channel, PRBS and the Eye.pdf

    【车联网领域】智能网联汽车产业发展行动计划(2025-2030年):技术突破与生态构建推动汽车产业数字化转型

    内容概要:本文介绍了《车联网(智能网联汽车)产业发展行动计划(2025-2030年)》的内容,涵盖发展背景、现状、目标、重点任务及保障措施。全球智能网联汽车成为汽车产业变革的核心方向,中国通过“车路云一体化”试点等初步形成全产业链生态优势。面对技术瓶颈、标准缺失、商业模式不清等挑战,中国设定了到2030年建成全球领先智能网联汽车产业体系的目标,包括L3级自动驾驶规模化商用、智能网联汽车新增产值突破1万亿元等阶段性目标。重点任务涉及技术突破(如AI、通信、芯片等)、基础设施建设(如智能化道路、云控平台等)、标准与法规完善、示范应用与商业化、产业协同与生态构建。保障措施包括政策支持、人才培育、安全保障和宣传推广。最终目标是实现经济效益、社会效益和战略意义,推动中国从“跟跑”向“领跑”跨越。; 适合人群:对智能网联汽车行业感兴趣的各界人士,包括政府决策者、企业管理人员、科研人员、投资者等。; 使用场景及目标:①帮助政府决策者了解智能网联汽车的发展方向和政策措施;②为企业管理人员提供行业趋势和发展机会的参考;③为科研人员明确研究重点和技术突破方向;④为投资者提供投资领域的指导。; 其他说明:本文详细阐述了智能网联汽车产业的发展规划,强调技术创新、生态协同和安全可控,旨在推动中国智能网联汽车产业的全面发展,为全球汽车产业变革贡献中国方案。

    在PYNQ开发板上构建用于交通标志识别的卷积神经网络——附源代码与项目指南(高分作品)

    项目描述:在ZYNQ的PL端部署基于HLS开发的卷积加速器和池化加速器,在PS端利用Python编程调用这些加速器完成交通标志识别。模型使用德国交通标志数据集(GTSRB)训练,精度达到97%。 文件目录说明: - HLS:包含卷积加速器和池化加速器的C语言代码。 - Train:包含训练所用的Python代码和最终模型参数文件。 - jupyter_notebooks:包含上传到PYNQ开发板上的Python代码文件和模型参数bin文件。上传后可使用Jupyter Notebook运行‘Traffic-Signs-Recognition.ipynb’进行测试,也可直接运行其他相关文件。。内容来源于网络分享,如有侵权请联系我删除。

    Maxwell永磁同步电机电磁振动噪声仿真分析及优化策略

    内容概要:本文详细探讨了Maxwell永磁同步电机的电磁振动噪声问题,利用Maxwell软件进行仿真分析,涵盖电磁场分布、电磁振动特性和噪声水平等方面的数据采集与分析。基于仿真结果,提出了通过调整设计参数(如线圈匝数、电流大小)和改进结构、材料等方法来优化电磁力和降低噪声的具体策略。并通过实际案例展示了优化效果,最终提升了电机的性能、运行平稳性和市场竞争力。 适合人群:从事电机设计、制造及相关领域的工程师和技术人员,尤其是对电磁振动噪声有研究兴趣的专业人士。 使用场景及目标:适用于需要深入了解Maxwell永磁同步电机电磁振动噪声机制及其优化方法的研究项目或产品开发阶段,旨在提高电机性能、降低能耗和减少噪声污染。 其他说明:本文不仅提供了理论分析,还结合具体实例进行了详细的优化实践,对于理解和解决类似问题具有重要参考价值。

    商用车P2并联混合动力系统HCU控制策略解析与建模指南

    内容概要:本文详细介绍了商用车P2并联混合动力系统的HCU(整车控制器)控制策略及其建模方法。首先探讨了模式切换策略,针对不同工况如车辆速度、电池电量等因素进行模式选择。接着深入讲解了扭矩分配策略,考虑到了温度变化以及坡道情况对扭矩分配的影响。此外,还讨论了能量回收策略,利用预测性制动提高能量利用率。最后提及了故障降级策略,确保系统在出现故障时能够快速响应。文中提供了多个具体代码片段来辅助理解和实施这些策略。 适合人群:从事汽车电子控制系统开发的技术人员,尤其是专注于混合动力系统的研究人员和工程师。 使用场景及目标:帮助开发者将理论性的功能规范转化为实际可用的控制模型,适用于商用车P2并联混合动力系统的开发过程中,旨在提升系统的效率和平顺性。 其他说明:建议读者在实践中不断调整和完善模型参数,以适应不同的应用场景和技术要求。同时,在构建模型时应注意保持良好的可追溯性和验证性,以便后续维护和改进。

    信捷PLC与触摸屏程序助力STC四轴机械手实现高效冲压自动化上下料

    内容概要:本文介绍了信捷标准化PLC程序与信捷触摸屏程序在STC四轴机械手中的应用,详细解析了程序结构及其功能特点。PLC程序包括初始化、主程序和子程序,确保机械手动作精准协调;触摸屏程序提供人机交互界面,便于监控和控制机械手的操作。两者结合使机械手在冲压上下料环节替代人工,提高生产效率和质量,适用于大批量、重复性强的作业环境。文中强调了程序的清晰注释、库文件加密的安全措施,以及机械手的定位精度、稳定性、可靠性等优点。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和机械手应用感兴趣的读者。 使用场景及目标:适用于需要提升冲压生产线自动化水平的企业,旨在减少人工干预,提高生产效率和产品一致性,降低故障率并保障生产安全。 其他说明:尽管库文件已加密,但不影响程序的正常编写和运行,确保了系统的安全性与稳定性。

    STM32运动控制:四轴联动、插补与电机控制全解析

    内容概要:本文详细介绍了基于STM32的四轴联动运动控制系统。系统不仅支持直线插补和圆弧插补功能,还实现了对四轴电机的精确控制,包括加减速控制和位置环控制。文中提供了详细的原理图和注释齐全的源代码,以及经过严格测试和优化的量产工控机代码,确保了系统的稳定性和高性能。此外,系统采用了高精度的编码器进行实时反馈,进一步提升了电机的位置控制精度。 适合人群:从事嵌入式系统开发、运动控制领域的工程师和技术爱好者。 使用场景及目标:适用于需要开发复杂运动控制系统的项目,如工业自动化设备、机器人等领域。目标是帮助读者理解和掌握四轴联动运动控制系统的原理和实现方法,从而能够独立开发类似的控制系统。 其他说明:本文提供的资料具有很高的实用性和参考价值,读者可以通过研究和实践,深入理解STM32在运动控制中的应用,并根据自身需求进行二次开发和定制。

    实训商业源码-分期付款应用程序手机模板-毕业设计.zip

    实训商业源码-分期付款应用程序手机模板-毕业设计.zip

    基于博途软件的PLC自助洗车机控制系统:全仿真程序、画面、接线图及IO分配表

    内容概要:本文介绍了基于PLC(可编程逻辑控制器)的自助洗车机控制系统的设计与实现。系统采用博途软件编写,实现了从启动到结束的完整洗车流程,包括喷水、刷洗、喷洒清洁剂、吹干等步骤。文中详细描述了洗车机的动作流程、原点复位设计、系统架构、代码与控制逻辑分析,并提供了人机界面、接线图和IO分配表等辅助资料。此外,还强调了系统的稳定性和优质售后服务。 适合人群:从事自动化控制领域的工程师和技术人员,特别是对PLC编程和洗车机控制系统感兴趣的读者。 使用场景及目标:适用于需要了解或开发自助洗车机控制系统的场合,旨在帮助读者掌握PLC编程技巧和洗车机的工作原理,提高系统的稳定性和可靠性。 其他说明:本文不仅提供了详细的硬件和软件设计方案,还涵盖了故障处理和售后服务的内容,确保系统的长期稳定运行。

    实训商业源码-无线支付-毕业设计.zip

    实训商业源码-无线支付-毕业设计.zip

    第十四届全国大学生智能汽车竞赛室外光电组的单片机硬件原理图

    内容概要:本文档为《单片机硬件原理图(参考).pdf》,主要提供了用于第十四届全国大学生智能汽车竞赛室外光电组的单片机硬件原理图。文档详细列出了单片机电路的关键组件及其连接方式,包括但不限于复位电路、烧写器接口、舵机接口、电调接口、IIC接口、SCI接口、时钟电路、PWM接口等。此外,还展示了单片机与雷达、电脑之间的USB转串口电路,以及相关的电源管理电路和信号处理电路。文档中多次提及了具体元器件型号和参数,如电容、电阻、晶体管等,并附带了详细的引脚定义和连接关系。文档由北京钢铁侠科技有限公司提供,地址位于北京市海淀区上地信息路12号1层E区E105室。 适合人群:电子工程专业学生、参赛选手及指导教师,特别是对单片机硬件设计有一定基础的人群。 使用场景及目标:①帮助参赛选手理解单片机硬件架构和各模块的功能;②为实际电路板的设计与焊接提供详细的参考依据;③辅助进行故障排查和性能优化。 阅读建议:本原理图较为复杂,建议读者先熟悉各个模块的基本功能,再逐步深入理解具体的电路连接和参数设置。同时,可以结合实际硬件进行对照学习,确保理论与实践相结合。

    基于纳什讨价还价的多微网间合作博弈模型:实现可再生能源灵活消费与成本优化

    内容概要:本文探讨了在日前电力批发市场中,多个微电网通过建立合作联盟,利用纳什讨价还价理论进行合作博弈,从而实现区域内可再生能源的灵活消费并降低成本。文章详细介绍了合作博弈模型的构建及其机制,分析了各微电网如何通过协商确定最优交易力和电价,最终达到利益最大化。研究表明,这种合作模式不仅提高了能源利用效率,还增强了微电网的市场竞争力。 适合人群:从事电力系统研究、分布式能源管理、智能电网规划的专业人士及研究人员。 使用场景及目标:适用于希望深入了解微电网合作博弈机制及其应用的研究者和技术人员,目标是探索如何通过合作博弈优化可再生能源的消费和成本。 其他说明:文章强调了合作博弈对于推动可再生能源市场化的重要性,并提出了未来进一步完善的建议。

    ThreadX 6.4在ARM A7平台(正点原子imx6ull)的移植

    ThreadX 6.4在ARM A7平台(正点原子imx6ull)的移植

    信號完整性小技巧 #5 AMI SIMULATION.pdf

    信號完整性小技巧 #5 AMI SIMULATION.pdf

Global site tag (gtag.js) - Google Analytics