索引:在执行数据查询的时候,加速查询效率,减少查询过程中消耗的服务器和数据库的资源。

索引类型:

  逻辑上

  Single column 单行索引

   Concatenated 多行索引

   Unique 唯一索引

  NonUnique 非唯一索引

  Function-based函数索引  

  Domain 域索引

  物理上

  Partitioned 分区索引

  NonPartitioned 非分区索引

  B-tree:

  Normal 正常型B树  

  Rever Key 反转型B树

  Bitmap 位图索引

  1.主键索引:跟随主键的创建和删除而创建和删除

  2.唯一索引:唯一索引可以跟随唯一约束产生和删除,但是创建唯一索引时对应的列必须满足唯一约束,并且创建唯一索引时,再添加的数据也要满足唯一约束

     创建:create unique index 索引名称 on 表名(列名);

        alter table 表名 add constraint 唯一约束名 unique(列名);

     删除:alter table 表名 drop constraint 索引名称;

        drop index 索引名称

  3.普通索引:列数据没有啥特点,但是要经常被查询到

    创建:create index 索引名 on 表名(列名);

    删除:drop index 索引名

  4.组合索引:有多个列需要同时被查询到时,可以创建组合索引,组合索引遵循左边命中原则,要想命中索引,查询语句需要包含索引的第一个列

    创建:create index 索引名称 on 表名(字段1,字段2...)

  5.函数索引:需要经过函数运算才能查询的字段

    创建:create index 索引名 on 表名(函数名(参数列))

  6.位图索引:创建在有大量重复值的列上,比如性别之类的字段上,位图索引是一张字段名和取值的0,1二维向量表。

    创建:create bitmap index 索引名称 on 表名(列名)

  7.分区索引:创建在分区表上的索引,都是分区索引,创建后不加后缀的默认都是全局索引

    7.1 本地索引:每个分区都有个索引来进行数据管理

    创建:create index 索引名称 on 表名(列名) local;

    本地索引不能创建唯一索引,因为每个索引只能保证每个分区的数据唯一性,不能保证整个表格的数据唯一性

    7.2 全局索引:对整个表格所有分区数据进行管理。

    创建:create index 索引名字 on 表名(列名) global

    全局索引不能创建位图索引

  8.索引失效的场景

    1.查询数据时条件两边类型不一致,发生了隐式转换

    2.条件筛选时使用了函数

    3.条件筛选时左边出现了数学计算

    4.空值查询 is null

    5.取反查询 !=  not

    6.组合索引时没有引用第一列

    7.索引的列 经常被DML修改

posted on 2022-11-27 17:02  银光短战棍  阅读(29)  评论(0编辑  收藏  举报