1.什么是索引
索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值所在的物理地址,其作用是提高对表中数据的查询速度,在使用索引后可以不用扫描全表来定位数据,而通过索引表找到该行数据对应的物理地址然后访问相应的数据。
2.索引的优缺点
优点: 提高查询数据的速度,根据索引分组和排序,加快分组和排序。
缺点: 创建和维护索引的时间增加了,同时占用硬盘空间。索引表占用的空间是数据表的1.5倍,构建索引会降低数据表的增删改的效率,因为在修改表的同时还需要修改索引表;
3.索引分类
1.主键索引:在创建主键primary key时自动创建索引。
2.普通索引:普通构建索引,没有任何限制
直接创建:CREATE INDEX 索引名 ON 表名(列名);
修改表创建:ALTER TABLE 表名 ADD INDEX 索引名;
3.唯一索引:建立索引的列必须唯一,不能重复
直接创建:CREATE UNIQUE INDEX 索引名 ON 表名(列名);
修改表创建:ALTER TABLE 表名 ADD UNIQUE INDEX 索引名(列名);
4.组合索引: 多个字段上创建的索引,在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀;
直接创建:CREATE INDEX 索引名 ON 表名(列名1,列名2...);
修改表创建:ALTER TABLE 表名 ADD INDEX 索引名(列名1,列名2...);
#当查询条件没有列名1时不会触发索引
5.全文索引:全文索引只能创建在CHAR,VARCHAR,TEXT类型的字段上。主要作用是提高查询较大字符串类型的速度;只有MyISAM引擎支持该索引;
直接创建:CREATE FULLTEXT INDEX 索引名 ON 表名(列名1,列名2...);
修改表创建:ALTER TABLE 表名 ADD FULLTEXT INDEX 索引名(列名1,列名2...);