赞
踩
索引是一个单独地存储在磁盘上的数据库结构,其包含着对数据表里面的所有记录的引用指针。
索引是在存储引擎中实现的,因此,每种存储引擎的索引都不一定完全相同,并且每种存储引擎也没一定支持所有索引类型。
索引的优点主要有:
索引也有缺点的,主要有:
普通索引是MySQL中的基本索引类型,允许在定义索引的列中插入重复值和空值。
唯一索引是指索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。
主键索引是一种特殊的唯一索引,不允许有空值。
单列索引即一个索引只包含单个列。一个表可以有多个单列索引。
组合索引是指在表的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用。使用组合索引时要遵循最左前缀集合。
全文索引类型为FULLTEXT,在定义索引的列上支持值的全文查找,允许在这些索引列中插入重复值和空值。全文检索可以在CHAR、VARCHAR或TEXT类型的列上创建。MySQL中只有MyISAM存储引擎支持全文索引。
空间索引是指对空间数据类型的字段建立的索引,MySQL中的空间数据类型有4种,分别是:GEOMETRY、POINT、LINESTRING和POLYGON。MySQL使用SPATIAL关键字进行扩展,使其能够用与创建正规索引类似的语法创建空间索引。相关列必须是非空的。空间索引只能在存储引擎为MyISAM的表中创建。
索引缺少或设计不合理都会对数据库和应用程序造成障碍。设计时,有以下准则:
最简单的方式是创建表时直接创建索引,基本语法格式如下:
CREATE TABLE table_name [col_name data_type]
[UNIQUE|FULLTEXT|SPATIAL] [INDEX|KEY] [index_name] (col_name [length]) [ASC|DESC]
示例如下:
# 普通索引 index(publication_year) # 唯一索引 unique index uniqId(bookId) # 全文索引 fulltext index fullindex(bookname) # 单列索引 index idx(bookname(5)) # 多列索引 index muxIndex(bookid, bookname, author) # 空间索引 spatial index index_na(bookname)
基本语法:
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX [index_name] ON table_name ( col_name [(length)] [ASC|DESC]);
也可以使用ALTER TABLE语句创建索引
基本语法:
ALTER TABLE table_name ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX [index_name] ON table_name ( col_name [(length)] [ASC|DESC]);
基本语法:
ALTER TABLE table_name DROP INDEX index_name;
或
DROP INDEX index_name ON table_name;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。