这几天一直在做生产系统数据库垃圾数据的删除,主表数据量有两个多亿,各种关联关系确定要删除的表有20个。列下碰到的问题和我的解决方法。
1. 外键对删除数据的影响
有两个表A和B。A中字段有id column1,B中有字段id,key,val,B表中val 是A表id的外键,A表主键id,B表主键id,key。这样建表似乎没什么问题,挺合适的。
但是当我们删除A表中一条数据时数据库会先去check B表有没有数据引用A表,如果没有那么删除,如果有给出外键约束。我们知道,如果表中数据达到一定数量级的时候在没有索引查询一条数据要做全表扫描,这是很耗时的,我的测试结果是已没有索引的列为条件时在2亿数据量的表中查询一条数据大概在12秒左右。加上索引的话快了不知道多少倍,所以当我们建表的时候如果有主外键关系,请给外键的地方加上索引吧,也就是这里B表的val。
分享到:
相关推荐
MySQL 外键的定义、作用、添加和删除 外键是指引用另外一个表中的一列或多列数据,被引用的列应该具有主键约束或者唯一性约束。外键用来建立和加强两个表数据之间的连接。例如,在学生档案和成绩单两张表中,如果...
* 外键绑定关系这里使用了“ON DELETE CASCADE”和“ON UPDATE CASCADE”,意思是如果外键对应数据被删除或者更新时,将关联数据完全删除或者相应地更新。 MySQL 中的外键可以强制实施数据的一致性和完整性,使得...
如果一个表的外键指向另一个表的主键,则在删除或更新主表中的主键值时,需要考虑对从表的影响,以避免出现孤立的数据行。 - **域完整性**:域完整性指的是限制列的有效值范围,如定义列的数据类型、长度等,以保证...
通过以上对主键和外键错误的总结,我们可以看到正确的使用主键和外键对于数据库设计的重要性。合理的主键和外键不仅可以提高数据管理的效率,还可以确保数据的一致性和完整性。因此,在设计数据库时,需要充分考虑到...
在实际操作中,建立外键时还需要考虑其他一些因素,例如更新或删除某条记录时,是否需要级联删除或更新其他表中引用了此记录的数据,以及是否允许将引用的字段置为NULL或者设置默认值等等。正确使用外键不仅可以维护...
外键约束是关系数据库中确保数据完整性和一致性的重要机制,它不允许在父表(引用其他表的字段的表)中删除那些已被子表引用的行。然而,有时候在开发或测试环境中,我们可能需要快速地删除所有表并重建数据库结构,...
级联操作是指当主表中的记录被添加或删除时,根据外键约束,从表的相关记录也会自动进行相应的添加或删除。 在C#中,LINQ to SQL提供了对数据库操作的强大支持。在VS2008中,你可以创建一个LINQ to SQL类图,通过...
MySQL 外键的添加与删除参考 MySQL 外键是关系数据库管理系统中的一种约束机制,它能够确保数据的一致性和完整性。外键是指在一个表中字段的值必须存在于另一个表中的字段值中。MySQL 中的外键只能在 InnoDB 存储...
9. **测试策略**:在外键关联的测试中,应关注数据的完整性和一致性,使用TestComplete或其他测试工具,编写测试脚本模拟各种插入、更新、删除操作,确保外键约束正确执行。 10. **数据库重构**:在数据库重构过程...
4. 拓扑排序:对依赖图进行拓扑排序,得到删除表的顺序,有外键约束的表优先。 5. 安全删除表:按照排序顺序,逐一执行`DROP TABLE` SQL语句,删除表。 在这个过程中,需要注意事务管理和异常处理,确保在出现错误...
总结起来,Hibernate中的一对多/多对一关联是通过主外键映射来实现的,通过注解和配置文件定义实体间的关联关系,利用懒加载或立即加载策略控制数据获取,同时要注意双向关联的维护和级联操作的设置,以确保数据的...
在大数据量和高并发的系统中,这可能会对性能产生影响。 7. **优化处理**: - 使用索引:对外键字段创建索引可以提高查询速度,特别是在涉及多表连接的操作中。 - 谨慎设计:减少不必要的外键,简化数据模型,有...
在数据库设计中,外键(Foreign Key)是一种关键机制,用于在两个表之间建立关联,确保数据的一致性和完整性。在Microsoft Access中,通过外键关系可以实现表之间的链接,使得一个表的数据能够引用另一个表的数据。...
在MySQL数据库系统中,外键(Foreign Key)是一种重要的关系型数据库约束,它用于建立和维护两个表之间的关联。...在实际操作中,我们需要根据业务需求选择合适的外键约束策略,并注意其对性能的影响。
3. **级联操作**:外键支持级联删除或更新,这意味着当主表中的记录发生变化时,可以通过配置实现子表中的相关记录也自动更新或删除。 #### 三、外键的定义与设置 ##### 1. 基本定义语法 外键的定义通常包括以下...
在数据库设计中,正确处理主表与子表之间的关系至关重要,因为这直接影响到数据的一致性和完整性。"数据库表排序,主表子表放置外键约束"这一主题涉及到数据库规范化、外键约束、数据导入以及程序化解决方案。下面将...
### MySQL 主外键操作详解 在关系型数据库中,主键和外键是...无论是删除字段、添加新字段、设置主键还是控制外键约束,都能够有效地提高数据管理的效率和准确性。希望本文能对您理解 MySQL 的主外键操作有所帮助。
实验三数据外键约束删除(方便删表).sql
在数据库管理中,有时需要对数据库进行彻底清理,比如在测试环境或开发环境中重置数据库状态,以便重新开始。这个过程通常涉及删除数据库中的所有表、存储过程、主键、外键以及索引等对象。下面我们将详细探讨这些...