oracle创建索引
数据库索引是为了提高查询速度的一种数据结构。
索引的创建语句
索引的创建语句非常简单。
CREATE INDEX 索引名 ON 表名(列名);
除了单列索引,还可以创建包含多个列的复合索引。
CREATE INDEX 索引名 ON 表名(列名1, 列名2, 列名3, ...);
删除索引也非常简单。
DROP INDEX 索引名;
查看某个表中的所有索引也同样简单。
SELECT * FROM ALL_INDEXES WHERE TABLE_NAME = '表名'
还可以查看某个表中建立了索引的所有列。
SELECT * FROM ALL_IND_COLUMNS WHERE TABLE_NAME = '表名'
索引的建立原则
1.索引应该建立在WHERE子句中经常使用的列上。如果某个大表经常使用某个字段进行查询,并且检索的啊行数小于总表行数的5%,则应该考虑在该列上建立索引。
2.对于两个表连接的字段,应该建立索引。
3.如果经常在某表的一个字段上进行Order By的话,则也应该在这个列上建立索引。
4.不应该在小表上建立索引。
索引的优缺点
索引主要是为了提高数据的查询速度,这就是索引的优点。但是当进行增删改的时候,会更新索引。因此索引越多,增删改的速度就会越慢,因为有一个维护索引的过程。创建索引之前需要权衡该字段是否经常发生增删改操作,否则可能会带来负优化的问题。
索引的优点
1.很大地提高了数据的检索速度。
2.创建唯一索引能保证数据库表中每一行数据的唯一性(唯一性约束)。
3.提高表与表之间的连接速度。
索引的缺点
1.索引需要占用物理空间。
2.当对表中的数据进行增加、删除和修改的时候,索引也要动态地进行维护,降低数据的维护速度。
关于查询优化器
当Oracle拿到SQL语句的时候,会使用查询优化器去分析该语句,并根据分析结果生成查询执行计划。也就是说,数据库是执行的查询计划,而不是SQL语句。
查询优化器有RBO(Rule-Based-Optimizer,基于规则的查询优化器)和CBO(Cost-Based-Optimizer,基于成本的查询优化器),其中基于规则的查询优化器在10g的版本中彻底消失了。原因是因为RBO最后的查询都是全表扫描,而CBO会根据统计信息选择最优的查询方案。
因此,CBO一旦发现有索引的存在,并且这个索引能帮助提高查询速度,就是使用通过索引进行查询的方法。
相关文章
- oracle 时间比较
- Oracle连接用户设置
- Oracle---number数据类型
- 【Oracle】-【COMMIT对索引的影响】-从trace看COMMIT对索引的影响
- Oracle 使用PLSQL 导出 一个表的insert 语句
- Oracle重新获取统计信息以及SQLSERVER重建索引
- Oracle hint 详解
- Oracle 查询表的索引包含的字段
- 【oracle】 blob&clob类型的字段插入字符串
- Oracle创建定时器及其相关用法
- Oracle学习笔记(一)——B-Tree索引
- oracle索引原理(b-tree,bitmap,聚集,非聚集索引)
- Oracle中查看建立索引和使用索引的注意点
- oracle设定用户密码使用时间
- oracle index 索引总结
- oracle索引聚餐表和散列聚餐表
- Oracle中select 1和select *的区别
- Oracle分区表删除分区引发错误ORA-01502: 索引或这类索引的分区处于不可用状态
- 记一次oracle crs无法重启事故
- Oracle Spatial 创建空间表、添加空间原表信息、添加删除空间索引
- oracle的sqlldr并行导入表不要加索引
- 每天自动备份Oracle数据库
- Oracle 版本说明