索引基本概念
索引是一个单独的、存储在磁盘上的数据库结构,包含着对数据表里所有记录的引用指针。
优点:
可以提高数据的查询的效率(类似于书的目录)
可以保证数据库表中每一行数据的唯一性(唯一索引)
减少分组和排序的时间(使用分组和排序子句进行数据查询)
被索引的列会自动进行分组和排序
缺点:
占用磁盘空间
降低更新表的效率(不仅需要更新表中的数据,还要更新相对应的索引文件)
索引的分类
普通索引和唯一索引
普通索引:MySQL中的基本索引类型,允许在定义索引的列中插入重复值和空值
唯一索引:要求索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。唯一主键索引是一种特殊的唯一索引,不允许有空值。
单列索引和组合索引
单列索引:一个索引只包含单个列,一个表可以有多个单列索引
组合索引:在表的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用(最左前缀原则)。
全文索引
全文索引的类型为
fulltext
。在全文索引的列上支持值的全文查找,允许在这些索引列中插入重复值和空值。全文索引可以在char
、varchar
和text
类型的列上创建。空间索引
空间索引是对空间数据类型的字段建立的索引
两种基本的索引类型
顺序索引(ordered index):基于搜索码的值的顺序排列,包括索引顺序文件和B+树索引文件等。顺序索引主要用于支持快速地对文件中的记录进行顺序或随机地访问。顺序索引的结构是按顺序存储搜索码的值,并将搜索码的值与包含该搜索码值的记录关联起来。
散列索引(hash index):通过搜索码值的散列函数(也称哈希函数)的值将所有记录平均、随机地分布到若干个散列桶中。
搜索码(search key):用于在文件中查找记录的属性或属性集。经常需要在一个文件上建立多个索引,此时该文件就有多个搜索码。
Last updated