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

  • 相关阅读:
    BestCoder17 1001.Chessboard(hdu 5100) 解题报告
    codeforces 485A.Factory 解题报告
    codeforces 485B Valuable Resources 解题报告
    BestCoder16 1002.Revenge of LIS II(hdu 5087) 解题报告
    codeforces 374A Inna and Pink Pony 解题报告
    codeforces 483B Friends and Presents 解题报告
    BestCoder15 1002.Instruction(hdu 5083) 解题报告
    codeforces 483C.Diverse Permutation 解题报告
    codeforces 483A. Counterexample 解题报告
    NSArray中地内存管理 理解
  • 原文地址:https://www.cnblogs.com/isme-zjh/p/13603237.html
Copyright © 2011-2022 走看看