Welcome to li chao's blog

若逢新雪初霁,满月当空,下面平铺着皓影,上面流转着亮银,而你带笑地向我步来,月色与雪色之间,你是第三种绝色!

Mariadb 索引及外键

索引      

    索引相当于一本书的目录,在一个数据库或表有索引的情况下,会很便于查询数据,使查询更加效率,相对的也有缺点,不利于去修改,比较麻烦,有索引便于查询,那就意味着索引创建的越多越好么?然而并不是;索引越多,越不便于大量的修删改,反而会使数据库的性能下降;表里的数据如果大多数甚至只是是用来查询的话,那可以稍微的多创建几个索引以便于查询。

一、创建索引

&1 创建表 时 创建索引

create table create_index( id int primary key,name varchar(10) unique, age int,key (age) );

查看

 

&2给已有的表添加索引

create  index  test_index on students (name);

 

查看

 

注: 主键具有索引的功能, 所以设置索引不要在有主键的字段上

&删除索引

drop index  索引名字 on 表

二、测试时间

set profiling=1;#打开sql语句执行时间

show profiles;#查看sql执行时间

注: 真实环境下不要轻易去打开此功能,会使数据库的性能下降

1>插入数据

&准备数据(利用python 中 pymsql 模块实现 插入10万条数据)

 

2>执行脚本 ( 注, test2 数据库 与test3 表必须存在)(  第三方登录  事务默认自动打开,所以需要关闭  commit)

&

 

 

3>验证一下

 

 

十万条数据已经插入进去

#分页查看下

 

4>打开seq语句执行时间

 

5>测试

查询不带索引的字段

select  * from test3 where name='name=0';

show proiflies;

给他添加索引再查看

#查看

 

 #查看查询使用时间

会发现  带索引明显 查询要快的多

 

外键

        如果一个实体的某个字段指向另一个实体的主键,就称为外键。被指向的实体,称之为主实体(主表),也叫父实体(父表)。负责指向的实体,称之为从实体(从表),也叫子实体(子表)

对关系字段进行约束,当为从表中的关系字段填写值时,会到关联的主表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并报错

注:设置外键的时候,一般是将范围较小的那个设置成外键( 谁是儿子谁是外键)

一、添加外键

1>

alter  table students1 add  consteaint  外键名称   foreign key   表字段(范围大)    references 另一表字段(范围小)

 

2>插入一条数据测试

 

&测试

这是因为 classes(id) 为外键 关联着  students1 表, calsses 表里没有  id=3 所对应的数据, 所以不以为然的 students1 里也不能有clis(id)=3的数据 ,(外键约束)

&测试能否删除

外键约束不能删除,若想删除,则需要把students1 表里所有与 cls_id =1 对应的数据全部删除即

 

 

 3>删除外键

 4>添加支持级联删除的外键

 

&1测试

删除成功

 

   

posted on 2019-05-20 23:51  lichaoyx  阅读(562)  评论(0编辑  收藏  举报

导航