参考文章:讲真,MySQL索引优化看这篇文章就够了.
感谢作者提供的知识分享,如果涉及侵权,请联系本人删除,谢谢
一、MySQL——索引基础
“索引(在MySQL中也叫“键key”)是存储引擎快速找到记录的一种数据结构。”
——《高性能MySQL》
索引类型:
主键索引 PRIMARY KE:特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引。注意:一个表只能有一个主键。
唯一索引 UNIQUE:唯一索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。
普通索引 INDEX:这是最基本的索引,它没有任何限制。
组合索引 INDEX: 即一个索引包含多个列,多用于避免回表查询。
全文索引 FULLTEXT:也称全文检索,是目前搜索引擎使用的一种关键技术。
3、索引设计的原则
适合索引的列是出现在where子句中的列,或者连接子句中指定的列;
基数较小的类,索引效果较差,没有必要在此列建立索引;
使用短索引,如果对长字符串列进行索引,应该指定一个前缀长度,这样能够节省大量索引空间;
不要过度索引。索引需要额外的磁盘空间,并降低写操作的性能。在修改表内容的时候,索引会进行更新甚至重构,索引列越多,这个时间就会越长。所以只保持需要的索引有利于查询即可。
MySQL 优化常用命令:
查看表索引情况: SHOW INDEX FROM user;
mysql>
mysql> show index from user;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| user | 0 | PRIMARY | 1 | id | A | 46 | NULL