多表delete时,造成表死锁

菜园里的番茄 软件开发工程师  2015-11-26 02:01:34
在对A、B表进行关联删除时,sql语句delete A from A、B where A.name=B.name and A.rectime=B.rectime;在数据量少时执行没一点问题,当数据量大时就对数据表A造成了死锁。请问各路大神,这是什么问题?
...全文
268 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
这个已经加啦,初步分析可能是MySQL本身的问题,当delete一千条左右数据时就特别慢,基本上是1s一条
回复
等不到来世 2015-11-26

--name,rectime上加索引;用临时表暂存要删的id。
select A.id into #t
from  A with(nolock),B with(nolock)
where A.name=B.name and A.rectime=B.rectime;

delete A
from #t
where A.id=#t.id
回复
Yole 2015-11-26
那就只能分段delete了~~~
回复
报死锁,除了delete没有其他的操作。
回复
Yole 2015-11-26
对A、B表还有别的操作么? 是报死锁错误么?还是一直在等待?
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-11-26 02:01
社区公告
暂无公告