5.|5. 索引
索引的作用?【5.|5. 索引】普通索引
索引用于快速查找具有特定列值的行。如果没有索引,MySQL必须从第一行开始,然后读取整个表以查找相关行。表越大,成本越高。如果表中有相关??列的索引,MySQL可以快速确定要在数据文件中间寻找的位置,而无需查看所有数据。这比按顺序读取每一行要快得多。
类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获取即可。
创建普通索引
create index 索引名 on 表名(列名);
删除普通索引
drop index 索引名 on 表名;
查看索引
show index from 表名称;
建表同时创建普通索引
create table t1(
id int not null auto_increment primary key,
name varchar(32),
email varchar(64),
extra text,
index ix_name(name)
/*添加索引到列名 name, 索引名为 ix_name*/
)
唯一索引
某一列属性值唯一时可创建唯一索引,查找更加快速。
/*创建表和唯一索引*/
create table t2(
id int not null auto_increment primary key,
name varchar(32),
email varchar(64),
unique index ix_name (name)
);
/*创建唯一索引*/
create unique index 索引名 on 表名(列名);
/*删除唯一索引*/
ALTER TABLE 表名 DROP INDEX 索引名;
主键索引
主键有两个功能:加速查询 和 唯一约束(不可含null)
当一个列被创建为主键时,它就会被赋予主机索引的属性。
联合索引
联合索引是将n个列联合成一个索引MySQL [teacher]> create index _name_email_email on t10(id,name,email);
其应用场景为:频繁的同时使用 n 个列来进行查询,如:where name = 'shark' and age = 18。
文章图片
drop 删除一个联合索引的时候,索引记录里面三个都删除掉了
SQl 执行计划
并不是真的执行,只是分析SQL语句.....
explain select name from t1 wherename='shark'\G
文章图片
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量