Chinaunix首页 | 论坛 | 博客
  • 博客访问: 426685
  • 博文数量: 137
  • 博客积分: 5190
  • 博客等级: 大校
  • 技术积分: 997
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-21 16:19
文章存档

2011年(17)

2010年(120)

我的朋友

分类: Mysql/postgreSQL

2010-03-11 18:28:36

拉风~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的手册?  发我
      saver  发我啊
说:
 删除子表数据,本来就不需要检查fk的吧
 删除父表才需要
timothy 说:
 可是我删除的时候速度就是超级慢。。
说:
 那就不清楚了。原理上说应该是不需要的。
 从来没用过外键
拉风~zhang 说:
 常理应该的检查
 逻辑上
timothy 说:
 我在去掉外键约束前 根本无法删除成功。
拉风~zhang 说:
 比如:父亲 和 儿子 , 你打人家孩子前要看他爸是谁,如果他爸不在了,那么他孩子怎么办谁来照顾
 可能不恰当
timothy 说:
 比较恰当。
 说明删除的时候还是要检查的。
拉风~zhang 说:
 既然建立了关系,那么就要严格的维持
Saver 说:
 wei,网上搜
拉风~zhang 说:
 timothy...删除的快面其实,是有我们的条件决定,mysql会选择delete_row() 还是delete_all_row()帮我们去操作,
Saver 说:
 拉风~zhang 说:
 比如:父亲 和 儿子 , 你打人家孩子前要看他爸是谁,如果他爸不在了,那么他孩子怎么办谁来照顾
 可能不恰当
 这个比喻应该是不恰当了
拉风~zhang 说:
 不恰当
Saver 说:
 从原理和需求上来说,外键设计就不是这样的
 你用部门和部门员工的关系来说是恰当的
拉风~zhang 说:
 我对FK,理解感觉就是trigger
Saver 说:
 你试过级联删除么
 性能低的让你头痛
 一个部门可以么有员工,但员工不可以没有部门
 
阅读(1009) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~