学习 数据库索引index

来源:互联网 发布:自动开关机的软件 编辑:程序博客网 时间:2024/05/20 16:11

之我见:索引的出现是为了在不读取整个表的情况下,使数据库应用程序可以更快地查找数据。类似于一本书的目录,根据目录查找内容所在的页码;试想如果没有目录的存在,你必须逐页查找。索引的实现有多种索引类型,如BTree索引,哈希索引,全文索引等等。索引会占物理空间,因此建立索引带来查找效率的提高和物理空间占据需要折中。可以针对一列建立索引,也可以针对多列建立索引。

官方解释:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。

SQL语句 -- 索引相关

CREATE INDEXCREATE INDEX index_name
ON table_name (column_name)

用户无法看到索引,它们只能被用来加速搜索/查询。注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。

假如您希望索引不止一个列,您可以在括号中列出这些列的名称,用逗号隔开:

CREATE INDEXCREATE INDEX index_name
ON table_name (column_name1,column_name2)


CREATE UNIQUE INDEXCREATE UNIQUE INDEX index_name
ON table_name (column_name)在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值,因此通常在primary key上建立unique index。
DROP INDEXDROP INDEX table_name.index_name

MySQL索引背后的数据结构及算法原理,请参考:http://www.codinglabs.org/html/theory-of-mysql-index.html  博主写的非常好。