十七, Oracle索引约束
管理索引-原理介绍
索引是用于加速数据存取的数据对象。合理的使用索引可以大大降低i/o次数,从而提高数据访问性能。
单列索引
适当的索引对于大型数据库的性能有不错的提升, 但在创建索引时要小心。选择字段取决于使用的是什么SQL查询。
单列索引是基于单个列所建立的索引
create index 索引名 on 表名(列名);
create index nameIndex on custor(name);
复合索引
复合索引是基于两列或是多列的索引。在同一张表上可以有多个索引,但是要求列的组合必须不同
create index emp_idx1 on emp(ename, job);
使用原则
1)、在大表上建立索引才有意义
2)、在where子句或是连接条件上经常引用的列上建立索引
3)、索引的层次不要超过4层
索引的缺点
索引有一些先天不足:
1)、建立索引,系统要占用大约为表1.2倍的硬盘和内存空间来保存索引。
2)、更新数据的时候,系统必须要有额外的时间来同时对索引进行更新,以维持数据和索引的一致性。
实践表明,不恰当的索引不但于事无补,反而会降低系统性能。因为大量的索引在进行插入、修改和删除操作时比没有索引花费更多的系统时间。
显示索引信息
1)、在同一张表上可以有多个索引,通过查询数据字典视图dba_indexs和user_indexs,可以显示索引信息。其中dba_indexs用于显示数据库所有的索引信息,而user_indexs用于显示当前用户的索引信息:
select index_name, index_type from user_indexes where table_name = '表名';
显示索引列
通过查询数据字典视图user_ind_columns,可以显示索引对应的列的信息
select table_name, column_name from user_ind_columns where index_name ='IND_ENAME';
也可以通过pl/sql developer工具查看索引信息
栗子:
下面的SQL创建一个新的表名为CUSTOMERS,并增加了五列:
CREATE TABLE CUSTOMERS(
ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25) ,
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID)
);
现在,您可以创建单个或多个列索引使用以下语法:
CREATE INDEX index_name
ON table_name ( column1, column2.....);
要在AGE列上创建一个索引, 来优化客户搜索一个特定的年龄,以下是SQL语法:
CREATE INDEX idx_age
ON CUSTOMERS ( AGE );
删除索引约束:
要删除索引的约束,使用下面的SQL:
ALTER TABLE CUSTOMERS
DROP INDEX idx_age;
十七, Oracle索引约束的更多相关文章
- oracle的约束隐式创建索引和先索引后约束的区别
oracle的约束隐式创建索引和先索引后约束的区别 两种情况:1.对于创建约束时隐式创建的索引,在做删除操作的时候: 9i~11g都会连带删除该索引 2.对于先创建索引,再创建约束(使用到此索引)这种 ...
- Oracle索引梳理系列(八)- 索引扫描类型及分析(高效索引必备知识)
版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...
- ORACLE 索引概述
索引是数据库中一种可选的数据结构,她通常与表或簇相关.用户可以在表的一列或数列上建立索引,以提高在此表上执行 SQL 语句的性能.就像本文档的索引可以帮助读者快速定位所需信息一样,Oracle 的索引 ...
- Oracle 索引扫描的4种类型
根据索引的类型与where限制条件的不同,有4种类型的Oracle索引扫描: 3,4可归一种 (1) 索引唯一扫描(index uniquescan) (2) 索引范围扫描(index range s ...
- 转://创建oracle索引时需要注意的7个事项
在创建Oracle索引时,有一些问题使我们需要注意的,下面就为您介绍创建oracle索引的一些注意事项,希望对您学习创建Oracle索引方面能有所帮助. 1.一般来说,不需要为比较小的表创建索引: 2 ...
- Oracle索引技术研究
Oracle索引类型 B树索引 特定类型索引 确定索引列 主键和唯一键值列的索引 外键索引 其他合适的索引列 B树索引 B树索引算法 B树是指B-tree(Balanced Tree),B树的存在是为 ...
- Oracle 索引扫描的五种类型
之前在讨论CBO和RBO的时候提到了索引扫描的几种类型. Oracle Optimizer CBO RBO http://blog.csdn.net/tianlesoftware/archive/20 ...
- oracle索引的理解
1.当查询表时where条件中有多个索引时,优先使用主键索引,其它索引会失效. 2.当查询的返回的数据占总量数据的百分比小于20%时,建索引才有效果 3.不是主键的索引值可以为空,主键索引不能为空. ...
- oracle索引监控
目的:监控oracle索引的有效性,看索引有没有被使用.然后根据监控结果删除或者调整索引. 步骤: 1.监控指定索引 命令: alter index 索引名 monitoring usage; 如 ...
随机推荐
- [noip模拟赛]虫洞holes<SPFA>
虫洞(holes.cpp/c/pas) [题目描述] N个虫洞,M条单向跃迁路径.从一个虫洞沿跃迁路径到另一个虫洞需要消耗一定量的燃料和1单位时间.虫洞有白洞和黑洞之分.设一条跃迁路径两端的虫洞质量差 ...
- MySQL(Linux)编码问题——网站刚刚上线就被光速打脸
MySQL(Linux)编码问题--刚刚上线就被光速打脸 MySql默认编码问题 总结了一下,大致是这样的 修改数据库配置 在URL上加载参数 MySql默认编码问题 说到这里真的想哭,改了无数bug ...
- 002_Three.js 中添加阴影 - [Three.js] - [阴影效果]
在Three.js中设置阴影效果,有多个地方需要设置属性. 和set()方法,java对象初始化时,使用fastjson解析,得到的json字符串有时为空{} 3.Java对象转为js ...
- 1029 Median (25分)
Given an increasing sequence S of N integers, the median is the number at the middle position. For e ...
- 数据库学习 day2 检索数据
上一节我们介绍了什么是数据库,以及一些基本的数据库术语 这一课介绍使用SELECT语句从表中检索一个或多个数据列. 关键字(Keyword) 作为SQL组成部分的保留字.关键字不能用作表和列的名字(类 ...
- 提示要安装Python-OpenSSL
PyOpenSSL是OpenSSL的python接口,用于提供加密传输支持(SSL),如果没用该模组,会导致goagent无法生成证书而影响使用. 若系统没有openssl,先安装openssl,** ...
- SpringMVC(三):转发和重定型
本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出一遍就懂!b站搜索狂神说或点击下面链接 https://space.bilibili.com/95256449?spm_id_from=33 ...
- Vulnhub FristiLeaks靶机渗透
VM上配置 VMware users will need to manually edit the VM's MAC address to: 08:00:27:A5:A6:76 VM上选择本靶机,编辑 ...
- zendframework3
1.开发时关闭cache,正式上线后打开cache application config file (config/application.config.php), disable this cac ...