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

    原文链接:https://www.cnblogs.com/yanggb/p/11221508.html

  • 相关阅读:
    HTML&CSS基础-内联样式和内部样式表
    HTML&CSS基础-超链接
    zabbix监控企业esxi虚拟机
    zabbix服务器监控suse系统教程
    HTML&CSS基础-内联框架
    zabbix监控路由器所有接口信息
    HTML&CSS基础-xHtml语法规范
    快速搭建企业subversion
    网易免费邮件开启smtp教程
    zabbix添加邮件报警机制
  • 原文地址:https://www.cnblogs.com/isme-zjh/p/13603237.html
Copyright © 2011-2022 走看看