oracle索引

数据库分区分表以及读写分离

断了今生、忘了曾经 提交于 2020-01-17 03:37:34
Oracle数据库分区是作为Oracle数据库性能优化的一种重要的手段和方法,做手头的项目以前,只聆听过分区的大名,感觉特神秘,看见某某高手在讨论会上夸夸其谈时,真是骂自己学艺不精,最近作GPS方面的项目,处理的数据量达到了几十GB,为了满足系统的实时性要求,必须提高数据的查询效率,这样就必须通过分区,以解燃眉之急! 先说说分区的好处吧! 1) 增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用; 2) 维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可; 3) 均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能; 4) 改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。 Oracle数据库提供对表或索引的分区方法有三种: ü 范围分区 ü Hash分区(散列分区) ü 复合分区 一、范围分区详细说明 范围分区就是对数据表中的某个值的范围进行分区,根据某个值的范围,决定将该数据存储在哪个分区上。如根据序号分区,根据时间等来进行分区。根据序号,比如小于2000000的放在part01, 2000000~4000000的放在part02。。。 create table AAA ( id number primary key, indate date not null ) partition by range

抓出外键没创建索引的表

喜你入骨 提交于 2020-01-16 19:58:19
create table parent_tb_test ( id number(10), name varchar2(32), constraint pk_parent_tb_test primary key(id) ); create table child_tb_test ( c_id number(10), f_id number(10), child_name varchar2(32), constraint pk_child_tb_test primary key(c_id), foreign key(f_id) references parent_tb_test ); SQL> select * from user_tables; no rows selected SQL> select * from user_indexes; no rows selected SQL> select table_name from user_tables; TABLE_NAME ------------------------------ CHILD_TB_TEST PARENT_TB_TEST SQL> select index_name from user_indexes; INDEX_NAME ------------------------------ PK_CHILD_TB

oracle_index的建立、修改、删除 侵删

心已入冬 提交于 2020-01-16 15:41:55
索引是关系数据库中用于存放每一条记录的一种对象,主要目的是加快数据的读取速度和完整性检查。建立索引是一项技术性要求高的工作。一般在数据库设计阶段的与数据库结构一道考虑。应用系统的性能直接与索引的合理直接有关。下面给出建立索引的方法和要点。 §3.5.1 建立索引 1. CREATE INDEX命令语法: CREATE INDEX CREATE [unique] INDEX [user.]index ON [user.]table (column [ASC | DESC] [,column [ASC | DESC] ] ... ) [CLUSTER [scheam.]cluster] [INITRANS n] [MAXTRANS n] [PCTFREE n] [STORAGE storage] [TABLESPACE tablespace] [NO SORT] Advanced 其中: schema ORACLE模式,缺省即为当前帐户 index 索引名 table 创建索引的基表名 column 基表中的列名,一个索引最多有16列,long列、long raw 列不能建索引列 DESC、ASC 缺省为ASC即升序排序 CLUSTER 指定一个聚簇(Hash cluster不能建索引) INITRANS、MAXTRANS 指定初始和最大事务入口数 Tablespace 表空间名

Oracle索引大全

隐身守侯 提交于 2020-01-15 20:09:29
文档结构如下: 前言: Oracle 官方文档对索引的描述真是弱透了,对索引的说明就是一坨……,support也没有很好的资料,下面还是用的官方上的内容经过自己的整理加上网上的资料;至于为什么用索引,以及索引的重要性,相信大家都知晓;如果把数据库所有的表比如成一本书,那么,索引就是书的目录,你不可能每一次查看书的内容从第一页读到最后一页,不用目录吧!! 索引类型: 索引是与表和群集关联的可选结构,可以使SQL查询对表执行得更快。正如本手册中的索引可以帮助您更快地找到信息(没有索引)一样,Oracle数据库索引提供了对表数据的更快访问路径。您可以使用索引而无需重写任何查询。结果是相同的,但是可以更快地看到它们。 Oracle数据库提供了几种索引方案,这些方案提供了互补的性能功能。这些是: B树索引:默认索引和最常见索引 B树集群索引:专门为集群定义 哈希集群索引:专门为哈希集群定义 全局和局部索引:与分区表和索引有关 反向键索引:对Oracle Real Application Clusters应用程序最有用 位图索引:紧凑;最适合具有少量值的列 基于函数的索引:包含函数/表达式的预先计算的值 域索引:特定于应用程序或盒带。 索引在逻辑上和物理上独立于关联表中的数据。作为独立的结构,它们需要存储空间。您可以创建或删除索引,而不会影响基表,数据库应用程序或其他索引。当您插入

oracle数据库约束、索引,enable和disable用处

冷暖自知 提交于 2020-01-13 16:11:54
1.数据库索引 索引:索引是对数据库表中一列或多列的值进行排序的一种结构 索引分类:主键索引(PRIMAY KEY)、唯一索引(UNIQUE)、常规索引(INDEX)、全文索引(FULLTEXT) 常规索引 CREATE INDEX 索引名 ON 表名 (字段名) 唯一索引 CREATE UNIQUE INDEX 索引名 ON 表名 (字段名) 2.数据库约束 约束:数据库约束时防止非法记录的规则 约束分类: 主键约束(Primay Key Coustraint):唯一性,非空性,一个表只能有主键,创建主键时会自动创建主键索引 ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY (字段名) 唯一约束(Unique Counstraint):唯一性,可以空,但只能有一个空,一张表可以有多个唯一约束,创建唯一约束时会自动创建唯一索引 ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (字段) 检查约束(Check Counstraint):对该列数据的范围、格式的限制(如:年龄、性别等) ALTER TABLE 表名 CHECK (字段 约束) 默认约束(Default Counstraint):该数据的默认值 ALTER TABLE 表名 ALTER 字段名 SET DEFAULT '默认值' 外键约束

Mysql索引优化分析-第一篇

巧了我就是萌 提交于 2020-01-13 10:20:25
1.性能下降SQL慢 执行时间长 等待时间长 查询语句写的烂 索引失效(单值,复合) 关联查询太多join(设计缺陷或不得已的需求) 服务器调优及各个参数设置(缓冲\线程数等) 2.常见通用的join查询 2.1SQL执行顺序 2.1.1手写 2.1.2机读 2.1.3总结 2.2Join图 2.3建表SQL 2.4 7种Join 3.索引简介 3.1什么是索引 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。 可以得到索引的本质: 索引是数据结构 可以简单理解为"排好序的快速查找数据结构"。 详解(重要): 结论: 数据本身之外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引。 一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往以文件形式存储在硬盘上. 我们平时所说的索引,如果没有特别指明,都是指B树(多路搜索树,并不一定是二叉树)结构组织的索引。 其中聚集索引,次要索引,覆盖索引,复合索引,前缀索引,唯一索引默认都是使用B+树索引,统称索引。当然,除了B+树这种类型的索引之外,还有哈希索引(hash index)等。 3.2索引优势 类似大学图书馆建书目索引,提高数据检索效率,降低数据库的IO成本 通过索引列对数据进行排序

oracle dba_indexes数据字典字段解析说明

送分小仙女□ 提交于 2020-01-13 06:39:24
字段 说明 OWNER 索引拥有者 INDEX_NAME 索引名字 INDEX_TYPE 索引类型 TABLE_OWNER 表的拥有者 TABLE_NAME 表名 TABLE_TYPE 表类型 UNIQUENESS 是否唯一 COMPRESSION 是否压缩 PREFIX_LENGTH 压缩键上前缀的列数量 TABLESPACE_NAME 属于哪个表空间 INI_TRANS 事务表的初始大小由对象的INI_TRANS设置指定,默认2 MAX_TRANS 最大的MAX_TRANS条目,默认255 INITIAL_EXTENT 初始化区大小65536 NEXT_EXTENT 第二个区大小1048576 MIN_EXTENTS 段中允许的最小区大小 MAX_EXTENTS 段中允许的最大区大小,默认2g PCT_INCREASE 后面区是前面区的增长百分比 PCT_THRESHOLD 每个块中允许索引入口的百分比阀值 INCLUDE_COLUMN 索引组织表主键索引中包含最后一列的列ID FREELISTS 分配到这个段的进程自由列表数量 FREELIST_GROUPS 分配到这个段的进程自由列表组的数量 PCT_FREE 一个块中最小自由空间的百分比 LOGGING 索引改变是否记录到日志 BLEVEL B树索引等级(从根块到叶子块的深度) LEAF_BLOCKS 索引中叶子块的数量

oracle 索引使用小结

有些话、适合烂在心里 提交于 2020-01-13 05:49:40
1、 普通索引 create index my_index on test (col_1); 可创建合并两列或多列的索引,最多可将32列合并在一个索引中(位图索引最多可合并30列) create index my_index on test (col_1,col_2); crate index my_index on test(col_1,col_2) tablespace my_indexes storage (initial 10K next 10K pctfree 10) 通过使用create index 命令的compute statistics来为索引计算统计值。也可以使用compress键来对索引进行压缩 create unique index my_index1 on test (col_1,col_2) tablespace my_indexes compress storage (initial 10k next 10k pctfree 10) compute statistics 2、 位图索引 create bitmap index bit_my_index on my_tab(col_1,col_2) tablespace my_tbs; 3、 使用oracle并行查询来创建索引 create index ix_parts on parts(id)

oracle中的一些基本概念

筅森魡賤 提交于 2020-01-13 03:04:52
  Oracle数据库的物理文件是存储在磁盘上的数据文件、控制文件和日志文件的总称。数据文件和日志文件是数据库中最重要的文件。数据库由若干个表空间组成,表空间由表组成,表由段组成,段由区间组成,区间由数据块组成。那么,数据在数据文件中是如何组织的呢?要了解这些内容我们首先必须理解什么是表空间(tablespace)、段(segment)、区(extent)、块(block),这些都是oracle数据库在数据文件中组织数据的基本单元。    块(block) 是数据存储的物理单位,也是数据文件中最基础的单位。数据直接存储在块上,块是oracle空间分配的最小单位。oracle中的块大小常见的有三种:2KB、4KB、8KB。块的大小在数据库创建时就已经固定下来,数据库中每个块的大小都是相同的,而且所有的块都有相同的格式,由“块头+表目录+行目录+空闲空间+数据空间”组成。块头包含着块类型(比如是表块、还是索引块)的信息、磁盘上块的位置等信息。表目录(table directory),如果有的话,包含着此块中存储各行的表的信息(如果一个块中存有多个表中的数据)。行目录(row directory)包含着数据行的描述信息,它是一个指针数组,指示了每一行在数据块中的物理位置。块头、表目录、行目录统称为块开销(block overhead),是oracle用来统计、管理块本身的

Oracle9i中监视索引的使用

梦想与她 提交于 2020-01-12 17:48:41
介绍 DBA和开发者都喜欢索引。它们可以加速查询搜索,特别是在一个数据仓库的环境中,因为这时数据库会接收到许多ad-hoc请求。要避免全表搜索,我们一般在每个可能被搜索的列中建立索引。不过索引会占用许多的表空间;在许多的情况下,索引比被索引的表消耗更多的存储空间。在插入和删除行的时候,索引还会引入额外的开销。在Oracle9i之前,要知道一个索引是否被使用是困难的,因此许多数据库都有许多没用的索引。这篇文章的目的就是向你介绍通过Oracle9i中的新特性来辨别未使用的索引。 辨别未使用的索引 Oracle9i提供了一个新的技术来监控索引以辨别索引有否被使用。要开始监控一个索引的使用,使用这个命令: ALTER INDEX index_name MONITORING USAGE; 要停止监控一个索引,输入: ALTER INDEX index_name NOMONITORING USAGE; 在v$objec_usage视图中包含有索引监控的使用信息。 CREATE OR REPLACE VIEW SYS.V$OBJECT_USAGE ( INDEX_NAME, TABLE_NAME, MONITORING, USED, START_MONITORING, END_MONITORING)AS select io.name, t.name, decode(bitand(i.flags,