mysql索引
mysql索引
delimiter //
create trigger
create table aa(id int) engine myisam;
在没有索引的前提下,几次查询的结果大同小异
alter table aa add index(id);
删除索引
alter table aa drop index id;
type为ALL,就说明这个查询时全表扫描,意味着这条select 语句差的已经不能再差了
possible_keys 意味着mysql预测会使用哪列作为索引的列
KEY :才是真正使用索引的列
Rows:涉及了多少行
Extra:使用where来定位
注:在mysql里索引页称之为键(key)
索引的优缺点
优点:可以大大提高查询的速度
缺点:
降低了写入的速度,建议如果大量插入数据的时候,可以先删除索引, 等数据插入完成后,再次添加索引。
也可以先禁用,插入完数据后,再启用。
alter table aa disable keys; 禁用索引
alter table aa enable keys; 启用索引
因为索引也是存数据的,所以也会占用硬盘空间,有的是有索引的大小比数据还要大
索引的类型:
普通索引
没有其他的约束
唯一性索引
主键索引(当创建了主键,主键这列就是主键索引)
多列索引
创建一个索引,这个索引有多列
全文索引
可以在创建表的时候就创建索引
create table aa(
id int ,
name varchar(20)
index {unique|primary|fulltext} 索引名(列)//普通索引
);
查看索引
show index from aa\G;
删除索引
alter table aa drop index id;
使用alter添加索引
alter table aa index bb(id)\G;