`

什么是索引?索引有哪几种?

 
阅读更多

索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。

索引的类型:

MySQL提供多种索引类型供选择:

(一)普通索引

    这是最基本的索引类型,而且它没有唯一性之类的限制。普通索引可以通过以下几种方式创建:

创建索引,例如CREATE INDEX <索引的名字> ON tablename (列的列表);
修改表,例如ALTER TABLE tablename ADD INDEX [索引的名字] (列的列表);
创建表的时候指定索引,例如CREATE TABLE tablename ( [...], INDEX [索引的名字] (列的列表) );

(二)唯一性索引

    这种索引和前面的“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一。唯一性索引可以用以下几种方式创建:

创建索引,例如CREATE UNIQUE INDEX <索引的名字> ON tablename (列的列表);
修改表,例如ALTER TABLE tablename ADD UNIQUE [索引的名字] (列的列表);
创建表的时候指定索引,例如CREATE TABLE tablename ( [...], UNIQUE [索引的名字] (列的列表)
);

(三)主键

主键是一种唯一性索引,但它必须指定为“PRIMARY KEY”。如果你曾经用过AUTO_INCREMENT类型的列,你可能已经熟悉主键之类的概念了。主键一般在创建表的时候指定,例如“CREATE TABLE tablename ( [...], PRIMARY KEY (列的列表) ); ”。但是,我们也可以通过修改表的方式加入主键,例如“ALTER TABLE tablename ADD PRIMARY KEY (列的列表); ”。每个表只能有一个主键。

(四)全文索引

MySQL从3.23.23版开始支持全文索引和全文检索。在MySQL中,全文索引的索引类型为FULLTEXT。全文索引可以在VARCHAR或者TEXT类型的列上创建。它可以通过CREATE TABLE命令创建,也可以通过ALTER TABLE或CREATE INDEX命令创建。对于大规模的数据集,通过ALTER TABLE(或者CREATE INDEX)命令创建全文索引要比把记录插入带有全文索引的空表更快。本文下面的讨论不再涉及全文索引,要了解更多信息,请参见MySQL documentation。

(四)单列索引与多列索引

索引可以是单列索引,也可以是多列索引。下面我们通过具体的例子来说明这两种索引的区别。假设有这样一个people表:

CREATE TABLE people ( peopleid SMALLINT NOT NULL AUTO_INCREMENT, firstname CHAR(50)
NOT NULL, lastname CHAR(50) NOT NULL, age SMALLINT NOT NULL, townid SMALLINT NOT
NULL, PRIMARY KEY (peopleid) );

分享到:
评论

相关推荐

    什么是索引?如何创建索引,索引的类型

    索引 什么是索引? 在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值得集合和相应的指向表中物理标识这些值得数据...索引的几种类型? 1.唯一

    69 更新数据的时候,自动维护的聚簇索引到底是什么?l.pdf

    聚簇索引是数据库索引技术中的一种特殊类型,它在数据表中直接存储了数据行,并且这些数据行是按照聚簇索引的键值(通常为主键)的顺序物理排列的。聚簇索引结构本质上是一种特殊的B+树数据结构,使得数据记录的物理...

    mysql面试题,MySQL中有几种索引类型,可以简单说说吗?

    MySQL中有几种索引类型,可以简单说说吗? FULLTEXT :即为全文索引,目前只有MyISAM引擎支持。其可以在CREATE TABLE ,ALTER TABLE ,CREATE INDEX 使用,不过目前只有 CHAR、VARCHAR ,TEXT 列上可以创建全文索引...

    几种索引技术的比较收集.pdf

    本篇文章主要介绍了几种索引技术的概念、应用和比较,讨论了稠密索引、稀疏索引、多级索引、辅助索引和B+树索引等机制。 索引技术是数据库系统中用于提高查询效率的一种机制。索引可以分为主索引和辅助索引两种。主...

    BAT面试突击资料.zip

    数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4...

    数据库用索引为什么比不用索引更快

    数据库索引主要有以下几种类型: 1. 主键索引:这是唯一索引,确保索引字段的值在表中是唯一的。主键索引不允许有空值,并且一个表只能有一个主键。 2. 唯一索引:与主键索引类似,它也确保索引字段的值唯一,但并...

    Elasticsearch-深入理解索引原理1

    ES是一种分布式全文搜索引擎,它将数据存储在索引中,这些索引类似于关系型数据库中的数据库,但具备更高的可扩展性和实时性。索引可以通过名称进行标识,并用于执行文档的各种操作,如创建、搜索、更新和删除。 当...

    oracle索引,常见索引问题

    常见的索引类型包括B*树索引和位图索引,每种都有其特定的应用场景和优势。 1. **B*树索引**:这是最常见的索引类型,类似于二叉树结构,能高效地根据键值进行查找。B*树索引有以下几种子类型: - **索引组织表...

    MySQL Innodb 索引原理详解

    在深入探讨MySQL Innodb索引之前,我们先了解几种基本的树形数据结构,包括二叉搜索树、B树、B+树以及B*树。 ##### 1.1 搜索二叉树(Binary Search Tree) 搜索二叉树是一种特殊的二叉树,每个节点至多有两个子...

    MySQL索引不会被用到的情况汇总

    它有以下几种创建方式: 1.创建索引 代码如下: CREATE INDEX indexName ON mytable(username(length)); 如果是 CHAR,VARCHAR 类型,length 可以小于字段实际长度;如果是 BLOB 和 TEXT 类型,必须指定 length,...

    labview中的数组索引详细讲解

    在使用自动索引功能时,需要注意以下几点: * 在 For 循环中,默认启用自动索引功能。 * 在 While 循环中,默认关闭自动索引功能。 * 如果你只想要把一个单一的变量从 For 循环中传送出来,那么你就需要在循环结构...

    索引类型-说明(索引文件有数据文件和索引表文件组成)

    接着,我们了解几种常见的文件组织形式: 1. 顺序文件:这是最基础的文件组织形式,数据按照一定的顺序存储,查找时需从头开始逐条扫描。 2. 索引文件:如上所述,带有索引表的文件,可以提供快速访问,因为索引表...

    oracle约束和索引笔记

    它们分为以下几种类型: - **非空约束(NOT NULL)**: 非空约束不允许字段值为NULL,确保该字段始终有值。 - **唯一约束(UNIQUE)**: 这种约束保证字段中的每个值都是唯一的,但允许NULL值。可以应用于单个字段...

    77回表查询对性能的损害以及覆盖索引是什么?.pdf

    在设计数据库索引时,有几点通用的原则需要遵守: 1. 为经常用于JOIN、WHERE子句和ORDER BY子句中的列创建索引。 2. 避免在经常更新的列上创建过多索引,因为索引会减慢数据的更新速度。 3. 对于数据值变化不大,...

    行业-75当我们在SQL里进行排序的时候,如何才能使用索引?.rar

    数据库系统会自动判断哪种方式更优。 6. **NULL值处理**:在MySQL等数据库中,NULL值在索引中的排序规则不同于非NULL值,这可能会影响索引的使用。 7. **索引选择性**:索引的选择性越高(即不同列值的数量接近...

    MySQL索引类型大汇总

    索引可以分为以下几种: * 单列索引 * 组合索引 * 唯一索引 * 主键索引 7.索引的使用 索引的使用可以根据实际情况选择,例如: * 对频繁查询的字段建立索引 * 对插入、更新、删除操作频繁的字段建立索引 * 对...

    sqlserver索引表设计数据类型选择

    该ppt详细描述sqlserver索引优化时带来的查询性能提升和更新锁开销,最后介绍表设计,字段数据类型的选择及使用适当的冗余减少表连接

    设计数据库中的索引有什么作用

    数据库索引主要有以下几种类型:B树索引(包括B+树)、哈希索引、全文索引、空间索引等。其中,B树索引是最常见的,适用于范围查询和顺序扫描;哈希索引适用于等值查询,但不支持范围查询;全文索引则专门用于文本...

    Oracle数据库中的索引管理技术.pdf

    Oracle 8i 支持几种不同类型的索引以满足许多类型的应用程序的需求,其中包括 B-树(标准)索引、反向键索引、位图索引、索引编排表和基于函数的索引。这些索引都是基于表列创建的各种类型的索引。 (1)标准(B-树...

    nexus index 索引手动更新

    总之,掌握手动更新Nexus索引的技巧,对于经常使用Nexus的开发团队来说是非常有价值的,它可以提高工作效率,确保团队始终能够快速访问到仓库中的最新组件。同时,了解并利用好提供的相关资源,如压缩包中的文档和...

Global site tag (gtag.js) - Google Analytics