索引
什么是索引?
索引是数据苦衷用来图稿查询效率的技术,类似于目录
为什么使用索引?
如果不使用索引数据会零散的保存在磁盘快中,查询数据需要挨个的遍历每一个磁盘块,直到找到数据位置,使用索引后,会在从盘中以树状节后对数据进行保存,查询数据时会大大降低磁盘块的访问量,从而提高查询效率
索引是越多越好吗?
索引会占用磁盘空间,只对常用的查询字段创建索引
有索引就一定好吗?
不一定,如果数据量比较少,使用索引反而会降低查询效率
索引的分类
- 聚集索引: 一张表只有一个聚集索引,数据路会自动为添加了主键的表传感聚集索引,一般情况下聚集索引就是通过主键值创建的索引,聚集索引的树状结构中保存了数据
- 非聚集索引: 一张表可以有多个非聚集索引,通过非主键字段创建的索引称为非聚集索引,非聚集索引中没有数据保存的是磁盘块的地址.
创建索引
格式: create index 索引名 on 表名(字段名(长度))
例如: 创建title索引 (表item2中的数据量非常大, 普通查询非常慢)
create index inedex_item2_title on item2(title);
测试:
select * from item2 where title='100';
-- 查询素的大幅提升
查看索引
show index from item2; -- 查看表item2中的索引
删除索引
-- 删除在item2中名为inedex_item2_title的索引
drop index inedex_item2_title on item2;
复合索引
通过多个字段创建的索引称为符合索引
应用场景: 频繁使用使用多个字段作为查询条件是可以为这几个字段创建一个符合索引
创建格式:
-- 同时给两个列创建索引
create index 索引名 on 表名()(列名1, 列名2);
索引总结
- 索引是用来提高查询效率的技术,类似于目录的作用
- 因为会占空间不是越多越好
- 数据量小时 会降低查询效率
- 聚集索引:自动通过主键创建 保存数据 只有一个
非聚集索引: 有多个 没有数据只有磁盘块地址 - 尽量不要在频繁修改的表上创建索引