首页 > 数据库技术 > 详细

mariadb 索引及外键

时间:2019-05-21 00:46:10      阅读:189      评论:0      收藏:0      [点我收藏+]

索引      

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

一、创建索引

&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测试

技术分享图片

删除成功

 

   

mariadb 索引及外键

原文:https://www.cnblogs.com/myxxjie/p/10897392.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!