mysql外键关联强制删除_关于mysql外键非关联删除的讨论

拉风~zhang 说:

timothy....你的删除语句可以贴出来看看吗?

timothy 说:

delete from websitekw0003 where wid=111;

就这么个语句

wid还是个索引呢。

这个表有三十万条数据

那么个语句执行 200妙。。

wei 说:

。。。。

拉风~zhang 说:

你把这表websitekw0003的外键去了,然后发现快乐

是吗

timothy 说:

我在执行之前 先运行一下  SET FOREIGN_KEY_CHECKS=0;

然后0秒就删除了。

wei 说:

有外键啊

Saver 说:

这个没道理啊

timothy 说:

看来跟外键 有莫大的关系。。

Saver 说:

难道有外键会做全表扫

wei 说:

啥没道理

Saver 说:

?

拉风~zhang 说:

你让表不做外键的检查

timothy 说:

是阿。

Saver 说:

这个又不是级联删除级联更新

和外键有啥关系么

拉风~zhang 说:

wid=111的记录有多少条呢,timothy

timothy 说:

我也觉得奇怪阿。

Saver 说:

顶多是要整理索引

timothy 说:

一万来条。

可是我去掉外键约束 速度确实飞快。。

Saver 说:

这个需要牛人来解释下了

timothy 说:

我在去掉外键之前尝试很多次 都无法删除成功。

拉风~zhang 说:

saver,外键约束和trigger原理类似吗?

Saver 说:

没研究过

如果你不需要级联更新级联删除的操作,建议不使用外键

刚去看了HP MYSQL

timothy 说:

Saver 说:

外键的使用会造成子表插入的时候,父表加锁

timothy 说:

这个。。更严重。。

wei 说:

还是不要用外键吧

Saver 说:

还好是行锁

以确保,主外键的约束

timothy

你做个实验

带外键删除的时候去show innodb status

看看有没有锁,都锁了啥

试试能explain这个delete么?

我刚看了innodb的手册,上面并没有提到删除子表数据的时候需要检测fk

wei 说:

innodb的手册?  发我

450612042@qq.com     saver  发我啊

realzyy@gmail.com 说:

删除子表数据,本来就不需要检查fk的吧

删除父表才需要

timothy 说:

可是我删除的时候速度就是超级慢。。

realzyy@gmail.com 说:

那就不清楚了。原理上说应该是不需要的。

从来没用过外键

拉风~zhang 说:

常理应该的检查

逻辑上

timothy 说:

我在去掉外键约束前 根本无法删除成功。

拉风~zhang 说:

比如:父亲 和 儿子 , 你打人家孩子前要看他爸是谁,如果他爸不在了,那么他孩子怎么办谁来照顾

可能不恰当

timothy 说:

比较恰当。

说明删除的时候还是要检查的。

拉风~zhang 说:

既然建立了关系,那么就要严格的维持

Saver 说:

wei,网上搜

拉风~zhang 说:

timothy...删除的快面其实,是有我们的条件决定,mysql会选择delete_row() 还是delete_all_row()帮我们去操作,

Saver 说:

拉风~zhang 说:

比如:父亲 和 儿子 , 你打人家孩子前要看他爸是谁,如果他爸不在了,那么他孩子怎么办谁来照顾

可能不恰当

这个比喻应该是不恰当了

拉风~zhang 说:

不恰当

Saver 说:

从原理和需求上来说,外键设计就不是这样的

你用部门和部门员工的关系来说是恰当的

拉风~zhang 说:

我对FK,理解感觉就是trigger

Saver 说:

你试过级联删除么

性能低的让你头痛

一个部门可以么有员工,但员工不可以没有部门

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值