MySQL——索引

MySQL——索引

定义

对数据库表的一列或者多列的值进行排序的一种结构(Btree方式)B树
传统B树的特点:
1.每一个节点能存储多个索引【包含数据】,由于该特征,促使树的高度比二叉树矮,从而降低了磁盘IO查找
2.由于每个节点存储了数据。。。
B+树
1.节点中只存储索引,不存储数据,从而单个节点能存储索引数量远远大于B树
2.数据均存储在叶子节点中,并且有序的相连【范围查找效果好】

优点

加快数据检索速度
例如,mysql有country数据库,库中有一个students表 插入100w条数据
id自增主键 name ‘Tom_%s’%(1)

缺点

占用物理存储空间(/var/lib/mysql)
当表中数据更新时,索引需要动态维护,降低数据维护速度。

索引示例

# cursor.executemany(SQL,[data1,data2,data3])
# 以此IO执行多条表记录操作,效率高,节省资源
1.开启运行时间检测
mysql>show variables like '%pro%';
mysql>set profiling=1;
2.执行查询语句(无索引)
select name from students where name = 'Tom99999';
3.查看执行时间
show profiles;
4.在name字段创建索引
create index name on students(name);
5.再执行查询语句
select name from students where name='Tom88888';
6.查看执行时间
show profiles;

索引分类

普通(MUL)and 唯一(UNI)

使用规则
1.可设置多个字段
2.普通索引:字段值没有约束,key标志位MUL
3.唯一索引(unique):字段不允许重复,但可以为NULL and KEY标志为UNI
4.哪些字段创建索引:经常用来查询的字段、where条件判断字段、order by排序字段
创建普通索引and唯一索引
创建表时

create table 表名(字段名 数据类型,
字段名 数据类型,
index(字段名),
index(字段名),
unique(字段名)
);

已有表中创建

create [unique] index 索引名 on 表名(字段名);

查看索引

1.desc 表名;--> KEY标志为:MUL、UNI
2.show index from 表名\G

删除索引

drop index 索引名 on 表名;

主键(PRI)and自增长(auto_increment)

使用规则

1.智能有一个主键字段
2.所带约束:不允许重复,且不能为NULL
3.KEY标志(primary):PRI
4.通常设置记录编号字段id,能唯一锁定一条记录

创建
创建表添加主键

create table student(
id int auto_increment,
name varchar(20),
primary key(id)
)charset=utf8,auto_increment=10000;##设置自增长起始值

已有表添加主键

alter table 表名 add primary key(id);

已有表操作自增长属性

1、已有表添加自增长属性
  alter table 表名 modify id int auto_increment;
2、已有表重新指定起始值:
  alter table 表名 auto_increment=20000;

删除

1、删除自增长属性(modify)
  alter table 表名 modify id int;
2、删除主键索引
  alter table 表名 drop primary key;
  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值