MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。能够获得索引的本质:索引是数据结构。 mysql
通常来讲索引自己也很大,不可能所有存储在内存中,所以索引每每以索引文件的形式存储的磁盘上web
咱们日常所说的索引,若是没有特别指明,都是指B+树结构组织的索引。其中汇集索引,次要索引,覆盖索引,复合索引,前缀索引,惟一索引默认都是使用B+树索引,统称索引。固然,除了B+树这种类型的索引以外,还有哈稀索引(hash index)等。sql
优点:提升数据检索的效率,下降数据的IO成本;下降数据排序的成本,下降了CPU的消耗 数据结构
劣势:虽然索引大大提升了查询速度,同时却会下降更新表的速度;实际上索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,因此索引列也是要占用空间的svg
单值索引:一个索引只包含单个列,一个表能够有多个单列索引 函数
惟一索引:索引列的值必须惟一,但容许有空值 mysql索引
复合索引:一个索引包含多个列 spa
建立索引: code
-- 若是是CHAR,VARCHAR类型,length能够小于字段实际长度;若是是BLOB和TEXT类型,必须指定 length。
CREATE [UNIQUE] INDEX indexName ON tableName(columnName(length));
ALTER TABLE tableName ADD [UNIQUE] INDEX indexName(columnName);
删除索引: xml
DROP INDEX [indexName] ON tableName;
查看索引:
SHOW INDEX FROM tableName;