阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle创建索引

272次阅读
没有评论

共计 959 个字符,预计需要花费 3 分钟才能阅读完成。

数据库索引是为了提高查询速度的一种数据结构。

索引的创建语句

索引的创建语句非常简单。

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 一旦发现有索引的存在,并且这个索引能帮助提高查询速度,就是使用通过索引进行查询的方法。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计959字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中