oracle索引

ORACLE外部表总结

有些话、适合烂在心里 提交于 2020-04-07 20:13:12
ORACLE外部表总结 https://www.cnblogs.com/kerrycode/p/3894260.html 外部表介绍 ORACLE外部表用来存取数据库以外的文本文件(Text File)或ORACLE专属格式文件。因此,建立外部表时不会产生段、区、数据块等存储结构,只有与表相关的定义放在数据字典中。外部表,顾名思义,存储在数据库外面的表。当存取时才能从ORACLE专属格式文件中取得数据,外部表仅供查询,不能对外部表的内容进行修改(INSERT、UPDATE、DELETE操作)。不能对外部表建立索引。因为创建索引就意味着要存在对应的索引记录。而外部表其实在没有存储在数据库中。故在外部是无法建立索引的。如果硬要建立的话,则系统会提示“操作在外部组织表上不受支持”的错误提示。 Notice: 外部表是ORACLE 9i后引入的。 外部表特征 (1) 位于文件系统之中(一定要在数据库服务器中,而不是其它网络路径),按一定格式分割, 例如@#$等,文本文件或者其他类型的文件可以作为外部表。   (2) 对外部表的访问可以通过SQL语句来完成,而不需要先将外部表中的数据装载进数据库中。   (3) 外部数据表都是只读的,因此在外部表不能够执行DML操作,也不能创建索引。   (4) ANALYZE语句不支持采集外部表的统计数据,应该使用DMBS

Oracle创建索引要做到三个适当

☆樱花仙子☆ 提交于 2020-04-07 12:11:55
在 Oracle 数据库中,创建索引虽然比较简单。但是要合理的创建索引则比较困难了。笔者认为,在创建索引时要做到三个适当,即在适当的表上、适当的列上创建适当数量的索引。虽然这可以通过一句话来概括优化的索引的基本准则,但是要做到这一点的话,需要数据库管理员做出很大的努力。具体的来说,要做到这个三个适当有如下几个要求。   一、 根据表的大小来创建索引。   虽然给表创建索引,可以提高查询的效率。但是数据库管理员需要注意的是,索引也需要一定的开销的。为此并不是说给所有的表都创建索引,那么就可以提高数据库的性能。这个认识是错误的。恰恰相反,如果不管三七二十一,给所有的表都创建了索引,那么其反而会给数据库的性能造成负面的影响。因为此时滥用索引的开销可能已经远远大于由此带来的性能方面的收益。所以笔者认为,数据库管理员首先需要做到,为合适的表来建立索引,而不是为所有的表建立索引。   一般来说,不需要为比较小的表创建索引。如在一个 ERP 系统的数据库中, department 表用来存储企业部门的信息。一般企业的部分也就十几个,最多不会超过一百个。这 100 条记录对于人来说,可能算是比较多了。但是对于计算机来说,这给他塞塞牙缝都还不够。所以,对类似的小表没有必要建立索引。因为即使建立了索引,其性能也不会得到很大的改善。相反索引建立的开销,如维护成本等等,要比这个要大。也就是说

Oracle Optimizer CBO RBO

邮差的信 提交于 2020-04-06 17:15:49
之前整理的一篇有关 CBO 和 RBO 文章: Oracle CBO 与 RBO http://blog.csdn.net/tianlesoftware/archive/2010/07/11/5709784.aspx Oracle 数据库中优化器( Optimizer )是 SQL 分析和执行的优化工具,它负责指定 SQL 的执行计划,也就是它负责保证 SQL 执行的效率最高,比如优化器决定 Oracle 以什么样的方式来访问数据,是全表扫描( Full Table Scan ),索引范围扫描( Index Range Scan )还是全索引快速扫描( INDEX Fast Full Scan : INDEX_FFS ) ; 对于表关联查询,它负责确定表之间以一种什么方式来关联,比如 HASH_JOHN 还是 NESTED LOOPS 或者 MERGE JOIN 。 这些因素直接决定 SQL 的执行效率,所以优化器是 SQL 执行的核心,它做出的执行计划好坏,直接决定着 SQL 的执行效率。 Oracle 的优化器有两种: RBO( Rule-Based Optimization ): 基于规则的优化器 CBO( Cost-Based Optimization ): 基于代价的优化器 从 Oracle 10g 开始, RBO 已经被弃用,但是我们依然可以通过 Hint 方式来使用它

Oracle Optimizer CBO RBO

﹥>﹥吖頭↗ 提交于 2020-04-06 17:15:29
之前整理的一篇有关 CBO 和 RBO 文章: Oracle CBO 与 RBO http://blog.csdn.net/tianlesoftware/archive/2010/07/11/5709784.aspx Oracle 数据库中优化器( Optimizer )是 SQL 分析和执行的优化工具,它负责指定 SQL 的执行计划,也就是它负责保证 SQL 执行的效率最高,比如优化器决定 Oracle 以什么样的方式来访问数据,是全表扫描( Full Table Scan ),索引范围扫描( Index Range Scan )还是全索引快速扫描( INDEX Fast Full Scan : INDEX_FFS ) ; 对于表关联查询,它负责确定表之间以一种什么方式来关联,比如 HASH_JOHN 还是 NESTED LOOPS 或者 MERGE JOIN 。 这些因素直接决定 SQL 的执行效率,所以优化器是 SQL 执行的核心,它做出的执行计划好坏,直接决定着 SQL 的执行效率。 Oracle 的优化器有两种: RBO( Rule-Based Optimization ): 基于规则的优化器 CBO( Cost-Based Optimization ): 基于代价的优化器 从 Oracle 10g 开始, RBO 已经被弃用,但是我们依然可以通过 Hint 方式来使用它

Oracle Optimizer CBO RBO

六月ゝ 毕业季﹏ 提交于 2020-04-06 17:15:02
之前整理的一篇有关 CBO 和 RBO 文章: Oracle CBO 与 RBO http://blog.csdn.net/tianlesoftware/archive/2010/07/11/5709784.aspx Oracle 数据库中优化器( Optimizer )是 SQL 分析和执行的优化工具,它负责指定 SQL 的执行计划,也就是它负责保证 SQL 执行的效率最高,比如优化器决定 Oracle 以什么样的方式来访问数据,是全表扫描( Full Table Scan ),索引范围扫描( Index Range Scan )还是全索引快速扫描( INDEX Fast Full Scan : INDEX_FFS ) ; 对于表关联查询,它负责确定表之间以一种什么方式来关联,比如 HASH_JOHN 还是 NESTED LOOPS 或者 MERGE JOIN 。 这些因素直接决定 SQL 的执行效率,所以优化器是 SQL 执行的核心,它做出的执行计划好坏,直接决定着 SQL 的执行效率。 Oracle 的优化器有两种: RBO( Rule-Based Optimization ): 基于规则的优化器 CBO( Cost-Based Optimization ): 基于代价的优化器 从 Oracle 10g 开始, RBO 已经被弃用,但是我们依然可以通过 Hint 方式来使用它

Oracle Optimizer CBO RBO

℡╲_俬逩灬. 提交于 2020-04-06 17:14:31
之前整理的一篇有关 CBO 和 RBO 文章: Oracle CBO 与 RBO http://blog.csdn.net/tianlesoftware/archive/2010/07/11/5709784.aspx Oracle 数据库中优化器( Optimizer )是 SQL 分析和执行的优化工具,它负责指定 SQL 的执行计划,也就是它负责保证 SQL 执行的效率最高,比如优化器决定 Oracle 以什么样的方式来访问数据,是全表扫描( Full Table Scan ),索引范围扫描( Index Range Scan )还是全索引快速扫描( INDEX Fast Full Scan : INDEX_FFS ) ; 对于表关联查询,它负责确定表之间以一种什么方式来关联,比如 HASH_JOHN 还是 NESTED LOOPS 或者 MERGE JOIN 。 这些因素直接决定 SQL 的执行效率,所以优化器是 SQL 执行的核心,它做出的执行计划好坏,直接决定着 SQL 的执行效率。 Oracle 的优化器有两种: RBO( Rule-Based Optimization ): 基于规则的优化器 CBO( Cost-Based Optimization ): 基于代价的优化器 从 Oracle 10g 开始, RBO 已经被弃用,但是我们依然可以通过 Hint 方式来使用它

Oracle Optimizer CBO RBO

有些话、适合烂在心里 提交于 2020-04-06 17:13:55
之前整理的一篇有关 CBO 和 RBO 文章: Oracle CBO 与 RBO http://blog.csdn.net/tianlesoftware/archive/2010/07/11/5709784.aspx Oracle 数据库中优化器( Optimizer )是 SQL 分析和执行的优化工具,它负责指定 SQL 的执行计划,也就是它负责保证 SQL 执行的效率最高,比如优化器决定 Oracle 以什么样的方式来访问数据,是全表扫描( Full Table Scan ),索引范围扫描( Index Range Scan )还是全索引快速扫描( INDEX Fast Full Scan : INDEX_FFS ) ; 对于表关联查询,它负责确定表之间以一种什么方式来关联,比如 HASH_JOHN 还是 NESTED LOOPS 或者 MERGE JOIN 。 这些因素直接决定 SQL 的执行效率,所以优化器是 SQL 执行的核心,它做出的执行计划好坏,直接决定着 SQL 的执行效率。 Oracle 的优化器有两种: RBO( Rule-Based Optimization ): 基于规则的优化器 CBO( Cost-Based Optimization ): 基于代价的优化器 从 Oracle 10g 开始, RBO 已经被弃用,但是我们依然可以通过 Hint 方式来使用它

如何写出高性能的sql语句?

痴心易碎 提交于 2020-04-03 10:30:03
如何写出高性能的sql语句? (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. (2) WHERE子句中的连接顺序.: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾. (3) SELECT子句中避免使用 ‘ * ‘: ORACLE 在解析的过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间 (4) 减少访问数据库的次数: ORACLE在内部执行了许多工作: 解析SQL语句, 估算索引的利用率, 绑定变量 , 读数据块等; (5) 在SQL*Plus , SQL*Forms和Pro*C中重新设置ARRAYSIZE参数, 可以增加每次数据库访问的检索数据量 ,建议值为200 (6) 使用DECODE函数来减少处理时间:

《数据库优化》- MySQL优化

瘦欲@ 提交于 2020-03-29 18:31:23
前言   MySQL作为我们最常用的 关系型数据库 ,在开发中,肯定会遇到数据量比较大的情况,而没有足够的性能作为保障,往往查询会比较慢。下面,我们展开来聊聊MySQL怎么优化的。 一、MySQL性能   1、最大数据量   没有数据量和并发数的数据库性能都是没有灵魂的。   MySQL没有限制 单表最大记录数 ,它取决于操作系统对文件大小的限制。   《阿里巴巴Java开发手册》推荐:单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。   性能由综合因素决定,抛开业务复杂度,影响程度依次是: 硬件配置、MySQL配置、数据表设计、索引优化 。 500万这个值仅供参考,并非铁律。   有位大佬操作过超过4亿行数据的单表,分页查询最新的20条记录耗时0.6秒。   SQL大致是: select field_1,field_2 from table where id < #{prePageMinId} order by id desc limit 20 ;   prePageMinId是上一页数据记录的最小ID。   虽然当时查询速度还凑合,随着数据不断增长,有朝一日必定不堪重负。   分库分表是个周期长而风险高的大活儿,应该尽可能在当前结构上优化,比如升级硬件、迁移历史数据等等,实在没辙了再分。对分库分表感兴趣的同学可以阅读分库分表的基本思想。      2

SQL学习笔记

不问归期 提交于 2020-03-28 04:18:08
创建视图和索引 ※视图常常被称为虚表。在视图被创建以后,你可以对视图采用如下命令:select,insert, update,delete。 ※索引是与磁盘上数据的存储方式不同的另外一种组织数据的方法。 ◎使用视图 ※视图并不占用数据库或表的物理空间。 ※创建视图的语法如下: CREATE VIEW <view_name> [(col1,col2...)] AS SELECT <col_names> FROM <table_names>; ※视图可以是多级的,也就是可以用视图来创建视图。但这会加大维护工作的复杂性。 1。列的重命名 注意: 当在视图中使用SQL的计算功能时,SQL会要求你给出一个虚字段的名字,这是可以理解,因为象 COUNT(*)或AVG(PAYMENT)是不能作为列名的。 2。SQL对视图的处理过程 ※运行SELECT语句-->查找表-->未找到-->查找视图。 3。在SELECT语句中的使用约束 在视图的SELECT语句中: ※不能使用UNION操作。 ※不能使用ORDER BY子句,但在视图中,使用GROUP BY子句可以有ORDER BY子句相同的功能。 4。在视图中修改数据 在视图创建以后,就可以用Insert,Update,Delete语句来更新,插入,删除视图中的数据。 5。在视图中修改数据的几个问题 ※对于多表视图,不能使用DELETE语句。