本篇文章,咱们将从索引基础开始,介绍什么是索引以及索引的几种类型,而后学习如何建立索引以及索引设计的基本原则。数据库
本篇文章中用于测试索引建立的user表的结构以下:性能优化
索引(在 MySQL 中也叫“键key”)是存储引擎快速找到记录的一种数据结构数据结构
——《高性能MySQL》工具
咱们须要知道索引实际上是一种数据结构,其功能是帮助咱们快速匹配查找到须要的数据行,是数据库性能优化最经常使用的工具之一。其做用至关于超市里的导购员、书本里的目录。性能
可使用SHOW INDEX FROM table_name;
查看索引详情学习
主键索引 PRIMARY KEY测试
它是一种特殊的惟一索引,不容许有空值。通常是在建表的时候同时建立主键索引。优化
注意:一个表只能有一个主键搜索引擎
惟一索引 UNIQUE设计
惟一索引列的值必须惟一,但容许有空值。若是是组合索引,则列值的组合必须惟一。
能够经过ALTER TABLE table_name ADD UNIQUE (column);
建立惟一索引
能够经过ALTER TABLE table_name ADD UNIQUE (column1,column2);
建立惟一组合索引
普通索引 INDEX
最基本的索引,它没有任何限制。
能够经过ALTER TABLE table_name ADD INDEX index_name (column);
建立普通索引
组合索引 INDEX
组合索引,即一个索引包含多个列。多用于避免回表查询。
能够经过ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3);
建立组合索引
全文索引 FULLTEXT
全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。
能够经过ALTER TABLE table_name ADD FULLTEXT (column);
建立全文索引
索引一经建立不能修改,若是要修改索引,只能删除重建。可使用DROP INDEX index_name ON table_name;
删除索引。
适合索引的列是出如今where子句中的列,或者链接子句中指定的列
基数较小的类,索引效果较差,没有必要在此列创建索引
使用短索引,若是对长字符串列进行索引,应该指定一个前缀长度,这样可以节省大量索引空间
不要过分索引。索引须要额外的磁盘空间,并下降写操做的性能。在修改表内容的时候,索引会进行更新甚至重构,索引列越多,这个时间就会越长。因此只保持须要的索引有利于查询便可。
-----END-----
喜欢本文的朋友们,欢迎扫一扫下图关注公众号撸码那些事,收看更多精彩内容