Heim >Datenbank >MySQL-Tutorial >DB2删除数据慢解决方法

DB2删除数据慢解决方法

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-07 17:17:192026Durchsuche

db2有两张表,A主表 B从表,B的外键是A的主键 A B两个表数据量都超过百万, 删除A表的一条记录,用主键作为删除条件,时间有明

db2有两张表,A主表   B从表,B的外键是A的主键
A B两个表数据量都超过百万,
删除A表的一条记录,用主键作为删除条件,时间有明显的延迟。
如果用其他字段做where条件,一次删除目标为几百条,等了几分钟也没有删成功。

如果先删除B表应该关联删除的数据,删掉几百条也很快。但是再删A表数据还是不行。

分析原因,,删B表数据db2直接删了,所以快。
删A表数据的时候db2会先去B表查询关联记录,这样一次删除A表中目标为几百条记录的实际需要的操作是:
1  根据条件选出A表记录集合,a
2. 以a为驱动表,在B表中查询关联记录,并记录结果为b
3. 删除B表中关联的数据b
4. 删除a
由于删除涉及到两张表,实际上从1到4的操作db2会自己加上事务,这样就慢了。

解决方法:
很简单,取消B的外键,然后删除就像闪电一样快了  :)

linux

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn