索引
1、索引简介
1) 什么是索引
我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。 说起加速查询,就不得不提到索引了。
2) 为什么要有索引
索引在 MySQL 中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关 键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。
3) 索引的优劣势:
索引的优势:可以快速检索
索引的劣势:索引本身也是表,因此会占用存储空间
2、MySQL 中索引的使用
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX myindex (username(16)) );
注意:如果是 CHAR,VARCHAR 类型,length 可以小于字段实际长度;如果是 BLOB 和 TEXT 类型,必须 指定 length。
创建表之后创建索引
CREATE INDEX myindex ON mytable(username(16)); 或者 ALTER table mytable ADD
2) 查看索引
SHOW INDEX FROM mytable
3) 删除索引
DROP INDEX myindex ON mytable; 或者 ALTER TABLE mytable DROP INDEX myinde
4) 通过 EXPLAIN 分析 SQL 是否使用到索
explain select * from mytable where username = 'jac
注意:如果 key 值为索引名称,则该查询使用了索引,如果 key 值为 null,则表示没有使用索引。
3、索引的使用规则
1) 索引分类
常见的索引类型有:主键索引、唯一索引、普通索引、全文索引、组合索引
主键索引:即主索引,根据主键 pk_clolum(length)建立索引,不允许重复,不允许空值;
唯一索引:用来建立索引的列的值必须是唯一的,允许空值;
普通索引:用表中的普通列构建的索引,没有任何限制;
全文索引:用大文本对象的列构建的索引;
组合索引:用多个列组合构建的索引,这多个列中的值不允许有空值。
2) 适合建立索引的情况
主键自动建立唯一索引;
经常作为查询条件在 WHERE 或者 ORDER BY 语句中出现的列要建立索引;
作为排序的列要建立索引;
查询中与其他表关联的字段,外键关系建立索引;
高并发条件下倾向组合索引;
用于聚合函数的列可以建立索引;
3) 不适合建立索引的情况
经常增删改的列不要建立索引;
有大量重复的列不建立索引;
表记录太少不要建立索引;