精华内容
下载资源
问答
  • 数据库索引有哪几种

    千次阅读 2017-08-29 09:31:44
    https://zhidao.baidu.com/question/306752012277622484.html
    https://zhidao.baidu.com/question/306752012277622484.html
    
    展开全文
  • 种类:1、按照索引列值的唯一性,索引可分为唯一索引和非唯一索引;非唯一索引:create index 索引名 on 表名(列名) tablespace表空间名;唯一索引:建立主键或者唯一约束时会自动在对应的列上建立唯一索引;2、索引...

    种类:

    1、按照索引列值的唯一性,索引可分为唯一索引和非唯一索引;

    非唯一索引:

    create index 索引名 on 表名(列名) tablespace 表空间名;

    唯一索引:

    建立主键或者唯一约束时会自动在对应的列上建立唯一索引;

    2、索引列的个数:单列索引和复合索引;

    3、按照索引列的物理组织方式。

    索引的创建格式:

    使用USER_IND_COLUMNS查询某个TABLE中的相应字段索引建立情况

    使用DBA_INDEXES/USER_INDEXES查询所有索引的具体设置情况。

    在Oracle中的索引可以分为:B树索引、位图索引、反向键索引、基于函数的索引、簇索引、全局索引、局部索引等,下面逐一讲解:

    一、B树索引:

    最常用的索引,各叶子节点中包括的数据有索引列的值和数据表中对应行的ROWID,简单的说,在B树索引中,是通过在索引中保存排过续的索引列值与相对应记录的ROWID来实现快速查询的目的。其逻辑结构如图:

    可以保证无论用户要搜索哪个分支的叶子结点,都需要经过相同的索引层次,即都需要相同的I/O次数。

    B树索引的创建示例:

    create index ind_t on t1(id) ;

    注1:索引的针对字段创建的,相同字段不能创建一个以上的索引;

    注2:默认的索引是不唯一的,但是也可以加上unique,表示该索引的字段上没有重复值(定义unique约束时会自动创建);

    注3:创建主键时,默认在主键上创建了B树索引,因此不能再在主键上创建索引。

    二、位图索引:

    有些字段中使用B树索引的效率仍然不高,例如性别的字段中,只有“男、女”两个值,则即便使用了B树索引,在进行检索时也将返回接近一半的记录。

    所以当字段的基数很低时,需要使用位图索引。(“低”的标准是取值数量 < 行数*1%)

    016d681ed9382537ecfebaecd16c75d1.png

    位图索引的逻辑结构如上图所示:索引中不再记录rowid和键值,而是将每个值作为一列,用0和1表示该行是否等于该键值(0表示否;1表示是)。其中位图索引的行顺序与原表的行顺序一致,可以在查询数据的过程中对应计算出行的原始物理位置。

    位图索引的创建示例:

    create bitmap index ind_t on t1(type);

    注:位图索引不可能是唯一索引,也不能进行键值压缩。

    三、反向键索引:

    考虑这个情况:某一字段的值是1-1000顺序排列,建立B树索引后依旧递增,到后来该B数索引不断在后面增加分支,会形成如下如的不对称树:

    6ac4ed5dd1ae98c59d5a993caf26c083.png

    反向键索引是一种特殊的B树索引,在存储构造中与B树索引完全相同,但是针对数值时,反向键索引会先反向每个键值的字节,然后对反向后的新数据进行索引。例如输入2008则转换为8002,这样当数值一次增加时,其反向键在大小中的分布仍然是比较平均的。

    反向键索引的创建示例:

    create index ind_t on t1(id) reverse;

    注:键的反转由系统自行完成。对于用户是透明的。

    四、基于函数的索引:

    有的时候,需要进行如下查询:select * from t1 where to_char(date,'yyyy')>'2007';

    但是即便在date字段上建立了索引,还是不得不进行全表扫描。在这种情况下,可以使用基于函数的索引。其创建语法如下:

    create index ind_t on t1(to_char(date,'yyyy'));

    注:简单来说,基于函数的索引,就是将查询要用到的表达式作为索引项。

    五、全局索引和局部索引:

    这个索引貌似很复杂,其实很简单。总得来说一句话,就是无论怎么分区,都是为了方便管理。

    具体索引和表的关系有三种:

    1、局部分区索引:分区索引和分区表1对1

    2、全局分区索引:分区索引和分区表N对N

    3、全局非分区索引:非分区索引和分区表1对N

    创建示例:

    首先创建一个分区表

    create table student

    (

    stuno number(5),

    sname vrvhar2(10),

    deptno number(5)

    )

    partition by hash (deptno)

    (

    partition part_01 tablespace A1,

    partition part_02 tablespace A2

    );

    创建局部分区索引(1v1):

    create index ind_t on student(stuno)

    local(

    partition part_01 tablespace A2,

    partition part_02 tablespace A1

    ); --local后面可以不加

    创建全局分区索引(NvN):

    create index ind_t on student(stuno)

    global partition by range(stuno)

    (

    partition p1 values less than(1000) tablespace A1,

    partition p2 values less than(maxvalue) tablespace A2

    ); --只可以进行range分区

    创建全局非分区索引(1vN)

    create index ind_t on student(stuno) GLOBAL;

    展开全文
  • 参考:https://blog.csdn.net/Ocean_999/article/details/85112639
    展开全文
  • Mysql索引有哪几种类型

    万次阅读 2019-02-27 10:35:15
    索引是一数据库中单列或者多列的值进行排序的结构。应用索引可以大幅度提高查询的速度。 用户通过索引查询数据,不但可以提高查询速度,也可以降低服务器的负载。用户查询数据时,系统可以不必遍历表中的所有...

    索引是一种将数据库中单列或者多列的值进行排序的结构。应用索引可以大幅度提高查询的速度。

    用户通过索引查询数据,不但可以提高查询速度,也可以降低服务器的负载。用户查询数据时,系统可以不必遍历表中的所有记录,而是查询索引列。

    但是,凡事都有双面性。对于依赖关系的子表和附表之间的联合查询时,使用索引可以提高查询速度,并且可以提高整体的系统性能。但是创建索引和维护需要耗费时间,并且该耗费时间与数据量的大小成正比;另外,索引需要占用物理空间,给数据的维护造成很多麻烦。

    整体来说,索引可以提高查询的速度,但是会影响用户操作数据库的插入操作。因为向右索引的表中插入记录时,数据库系统会按照索引进行排序。所以,用户可以将索引删除后,插入数据,当数据插入操作完成后可以重新创建索引。

     

    正题:MySQL索引分类

    MySQL索引包括普通索引、唯一索引、全文索引、单列索引、多列索引、空间索引

    1、普通索引

    即不应用任何限制条件的索引,该索引可以在任何数据类型中创建。字段本身的约束条件可以判断其值是否为空或唯一。

    2、唯一索引

    使用UNIQUE参数可以设置唯一索引。创建该索引时,索引的值必须唯一。主键是一种特殊唯一索引。

    3、全文索引

    使用FULLTEXT参数可以设置全文索引。全文索引只能创建在CHAR、VARCHAR、TEXT类型的字段上。查询数据量较大的字符串类型字段时,使用全文索引可以提高查询速度。注意:全文索引在默认情况下是对大小写字母不敏感的,可以通过使用二进制对索引的列进行排序以执行大小写敏感的全文索引。MySQL中只有MyISAM存储引擎支持全文索引

    4、单列索引

    顾名思义,单列索引值对应一个字段的索引。可以包括上述的三种索引方式。应用该索引的条件只需要保证该索引值对应一个字段即可。

    5、多列索引

    多列索引是在表的多个字段上创建一个索引。该索引只想创建时对应的多个字段,可以通过这几个字段进行查询。要想应用该索引,用户必须使用这些字段中的第一个字段。

    6、空间索引

    使用SPATIAL参数可以设置控件索引。控件索引只能建立在控件数据类型(LINESTRING、POINT、GEOMETRY等)上,这样可以提高系统获取控件数据的效率。MySQL中只有MyISAM存储引擎支持空间索引,且该字段不能为空值。

     

    (存储引擎部分可以参考文章——常用的mysql存储引擎及其特点

    展开全文
  • SqlServer数据库索引

    千次阅读 2019-03-15 11:42:00
    数据库索引有哪几种? 聚集索引: 一张表只能有一个聚集索引,通常主键默认是聚集索引,也可以设置非主键列为聚集索引,设置聚集索引后,数据存储将按照索引列有规则的排列。 非聚集索引(NONCLUSTERED): 一张表...
  • 数据库索引

    2021-01-12 09:18:32
    索引有哪几种类型? 主键索引: 数据列不允许重复,不允许为NULL,一个表只能有一个主键。 唯一索引: 数据列不允许重复,允许为NULL值,一个表允许多个列创建唯一索引。 可以通过 ALTER TABLE table_name ADD UNIQUE ...
  • 提高查询速度,有利于排序和分组. (排序和分组如用不上索引,则会产生临时表和...不需要有索引名,因为只有一个主键索引 唯一索引(unique key) ---->unique key email(email(10)) 括号里面是表字段,外面是索引...
  • 数据库事务哪些隔离级别?MySQL的默认隔离级别?2、面试官心里分析用mysql开发的三个基本面:存储引擎、索引,然后就是事务,你必须得用事务。因为一个业务系统里,肯定要加事务保证一堆关联操作,要么一起成功...
  • 数据库-索引

    2021-05-11 09:50:09
    索引 ...索引哪几种: 按物理存储的角度:聚集索引(聚簇索引的顺序,就是数据在硬盘上存储的物理顺序,所以一个表中只能一个)、非聚集索引(用B+树,叶子结点指向表记录的指针)(聚簇索引
  • 数据库索引

    千次阅读 2017-08-10 21:53:50
    索引的类型有哪几种? 答:索引主要有: 主键索引:数据记录里面不能有null,数据内容不能重复,在一张表里面不能有多个主键索引。 普通索引:使用字段关键字建立的索引,主要是提高查询速度 唯一索引:字段...
  • 关于索引有些地方我不太明白1.oracle常用的都有哪几种索引,比如唯一索引之类的,sql语句都是怎么写?2.都在什么情况下适合用?3.最正常的语句create index name on.......建出来的是那种索引啊?4.表中主键和外键...
  • MySQL数据库面试题(2020最新版)

    万次阅读 多人点赞 2020-03-10 17:20:40
    数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4...
  • 情景示例:这张表存的每个客户最近一次交易订单信息,要求保证单个用户数据不重复录入,且执行效率最高,与数据库交互最少,支撑数据库的高可用。此时,可以使用"REPLACE INTO"语句,这样就不必先查询,再决定是否先...
  • 存储引擎其实就是对于数据库文件的一存取机制,如何实现存储数据,如何为存储的数据建立索引以及如何更新,查询数据等技术实现的方法。 通俗版: mysql中的数据使用不同的技术存储在文件或者内存中,这些技术中...
  • JVM 内存分哪几个区,每个区的作用是什么?JVM哪些回收算法,对应的收集器哪些? GC 的两判定方法 ?CMS 收集器与 G1 收集器的特点。 hashmap源码问题 HashMap、HashMap如何保证线程安全、Concurr
  • 现在我们就以下5点来逐步了解下MySQL吧1、MySQL存储引擎有哪几种2、MySQL事务3、MySQL锁4、MySQL分库分表5、MySQL索引优化1、MySQL存储引擎有哪几种这里只列举2种,因为这两种常用,并且在面试中做比较...
  • 数据库

    2020-03-19 18:53:19
    文章目录事务的概念和特性?会出现哪些并发一致性问题?数据库的四隔离级别?什么是乐观锁和悲观锁?...数据库索引的实现原理(B+树)使用B树和B+树的比较使用B树索引和哈希索引的比较使用索引的优点...
  • 版权 余额宝一面 JVM 内存分哪几个区,每个区的作用是什么?JVM有哪些回收算法,对应的收集器有哪些? GC 的两种判定方法 ?... java线程同步都有哪几种方式,在 Java 中 CycliBarriar 和 CountdownLatch
  • 索引和散列的实现技术多种,但没有是绝对最好的,每方式其最适合的场景,可通过这个方面来进行评估:访问类型(能有效支持的访问类型,如特定值查找、范围查找)、访问时间、插入时间、删除时间、空间...
  • 数据库考点

    2020-09-11 21:51:05
    数据库考点数据库事务数据库有哪几种分类?特点是?mysql 有关权限表都有哪几个?B树和B+树为什么B+树比B树更适合做系统的数据库索引和文件索引B树和B+树有什么区别?红黑树和AVL树有什么区别?什么是事务事务四大...
  • 数据库事务哪些隔离级别?MySQL的默认隔离级别?2、面试官心里分析用mysql开发的三个基本面:存储引擎、索引,然后就是事务,你必须得用事务。因为一个业务系统里,肯定要加事务保证一堆关联操作,要么一起成功...
  • 数据库基础知识

    2021-03-04 20:35:31
    文章目录数据库基础知识1、为什么要使用数据库2、什么是SQL?3、什么是MySQL?4、数据库三大范式是什么5、mysql有关权限的表都有哪几个6、...3、索引使用场景(重点)4、索引有哪几种类型?5、索引的数据结构(b树,hash
  • MySQL数据库面试题

    2020-08-04 22:11:08
    数据库基础知识 为什么要使用数据库 什么是SQL? 什么是MySQL? 数据库三大范式是什么 mysql有关权限的表都有哪几个 ...索引有哪几种类型? 索引的数据结构(b树,hash) 索引的基本原理 索引算法有哪些
  • 最全数据库面试真题

    千次阅读 2020-06-03 19:36:05
    文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?...索引使用场景(重点)索引有哪几种类型?索引的数据结构(b树,hash)索引的基本原理索引算法有哪些?索引设计的原则?创建索引的原则
  • Mysql中有哪几种锁? MyISAM支持表锁,InnoDB支持表锁和行锁,默认为行锁 表级锁:开销小,加锁快,不会出现死锁。锁定粒度大,发生锁冲突的概率最高,并发量最低 行级锁:开销大,加锁慢,会出现死锁。锁力度小...
  • 数据库基础知识 为什么要使用数据库 什么是SQL? 什么是MySQL? 数据库三大范式是什么 mysql有关权限的表都有哪几个 ...索引有哪几种类型? 索引的数据结构(b树,hash) 索引的基本原理 索引算法有哪些
  • 数据库面试

    2014-09-06 18:41:00
    5、sql中循环有哪几种形式(while、游标) 6、Sql Schema是什么? 7、说说数据库遵循的前三范式是什么? 8、请写出sql行转列以及列转行。 9、sql中树查询(with tree) 10、如何删除数据库表中的重复数据 11、...
  • Mysql中有哪几种锁? MyISAM支持表锁,InnoDB支持表锁和行锁,默认为行锁 表级锁:开销小,加锁快,不会出现死锁。锁定粒度大,发生锁冲突的概率最高,并发量最低 行级锁:开销大,加锁慢,会出现死锁。锁力度小...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 227
精华内容 90
关键字:

数据库索引有哪几种