为何该mysql 的删除语句耗时这么久???

[复制链接]
查看11 | 回复5 | 2012-9-28 16:17:24 | 显示全部楼层 |阅读模式
下面的语句耗时 0.063 sec,0 行
SELECT C.*
FROM tbl_receivedetail C,tbl_settlementbalance A,tbl_receiveheader B
WHERE A.LoadId=B.LoadId
AND B.ReceiveId=C.ReceiveId
AND A.BalanceStatus=1
AND B.BalanceStatus=1
AND B.confirm = 1
AND B.WarehouseId=1
AND A.BackupSign=0;
但是下面的语句只是把select 改为 delete,耗时3分钟,三个表的数据都不超过1000行记录,请问问题出在那里?
DELETE C
FROM tbl_receivedetail C,tbl_settlementbalance A,tbl_receiveheader B
WHERE A.LoadId=B.LoadId
AND B.ReceiveId=C.ReceiveId
AND A.BalanceStatus=1
AND B.BalanceStatus=1
AND B.confirm = 1
AND B.WarehouseId=1
AND A.BackupSign=0;

回复

使用道具 举报

千问 | 2012-9-28 16:17:24 | 显示全部楼层
set profiling=1
show profiles
show profile cpu,block io for query id;
看下瓶颈在哪里?
回复

使用道具 举报

千问 | 2012-9-28 16:17:24 | 显示全部楼层
幕南风 发表于 2013-10-26 09:20
set profiling=1
show profiles
show profile cpu,block io for query id;

原因是:Sending data=144.561267
但问题是问什么select的时候很快,delete就这么慢。而且有不是每次都这样,连续执行几次delete后速度又很快的。
回复

使用道具 举报

千问 | 2012-9-28 16:17:24 | 显示全部楼层
是否启用的查询缓存。
有没有触发器?
explain一下看看select的情况
另外,0.063 sec,0 行
0行是什么意思。
回复

使用道具 举报

千问 | 2012-9-28 16:17:24 | 显示全部楼层
我想LZ的意思是说,select 语句比较快,delete 为什么会慢,是不是跟myql内部机制有什么关系,就像用delete 和truncate,truncate的速度通常比delete快呢。
回复

使用道具 举报

千问 | 2012-9-28 16:17:24 | 显示全部楼层
这个delete看起来好别扭啊,能这样写?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行