社区
MySQL
帖子详情
delete from table where id in(数万条记录)
yalan
2014-01-12 04:00:41
测试delete from table where id in(1,2,3)正常
但是
delete from table where id in(select id from table2)
就卡死了
select id from table2会返回至少5万条记录
该怎么优化这条语句呢?
...全文
21675
8
打赏
收藏
delete from table where id in(数万条记录)
测试delete from table where id in(1,2,3)正常 但是 delete from table where id in(select id from table2) 就卡死了 select id from table2会返回至少5万条记录 该怎么优化这条语句呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yalan
2014-02-23
打赏
举报
回复
谢谢大家,学习了
ermuzi
2014-01-13
打赏
举报
回复
据说用where exists子查询可以提高检索速度,可以试试: delete from table1 a where exists(select 1 from table2 b where a.id=b.id)
十一路
2014-01-13
打赏
举报
回复
之所以会卡 是因为子查询的操作会铁定会创建临时表,当然创建内存临时表并不可怕 但是当你数据量大了以后,内存临时表的单表大小限制后,临时表会转换为写磁盘形式的物理内存表 这两个参数决定了你临时表的大小 tmp_table_size max_heap_table_size 你可以查看这两个状态状态的变化,看你数据库性语句是否有问题。 Created_tmp_disk_tables/Created_tmp_tables<5% 解决方法的话: 楼上说了,用join语法, 特定的情况才去用子查询
知道就是你
2014-01-13
打赏
举报
回复
http://blog.csdn.net/jenminzhang/article/details/9629749
增加,删除,查询均有
知道就是你
2014-01-13
打赏
举报
回复
引用 1 楼 ACMAIN_CHM 的回复:
delete a from table1 a inner join table2 b on a.id=b.id
删除,修改,查询 使用 in 关键字,如果对应的值太多时,都会卡死的,建议使用inner join 替换in 。 替换详细用法,参加我的博客 :
http://blog.csdn.net/jenminzhang/article/details/8861148
rucypli
2014-01-13
打赏
举报
回复
引用 1 楼 ACMAIN_CHM 的回复:
delete a from table1 a inner join table2 b on a.id=b.id
in子查询这个样的语句在mysql5.6之前一直是禁止使用的 效率极差 改成表连接的方式
ACMAIN_CHM
2014-01-12
打赏
举报
回复
delete a from table1 a inner join table2 b on a.id=b.id
数据库删除数据 truncate 与
delete
数据库删除数据 truncate 与
delete
delete
from
table
where 直接删除表中的某一行数据,并且同时将该行的删除操作作为事务
记录
在日志中保存以便进行进行回滚操作。所以
delete
相比较truncate更加占用资源,数据空间不释放,因为需回滚。对
table
和view都能操作 truncate
table
一次性地从表中删除所有的数据(释放存储表数据所用的数据页来删除数据)并不把单独的删除操作
记录
记入日志保存(只在事务日志中
记录
页的释放),因此也不能回滚,不能恢复数据,在删除
mysql删除数据加Where IN条件导致删除失败的问题解决办法
DELETE
FROM STDTopic WHERE
ID
IN( select
ID
from ( select
ID
from STDTopic where TopicTypeValue='20' )
id
s )
oracle
delete
from慢,
delete
数据很慢调优解决
delete
from tb_test partition (TB_test_P200711)where
id
<=15744829 and
id
>=14471371and created_date between to_date('2007-11-07 00:00:00','yyyy-mm-dd hh24:mi:ss')and to_date('2007-11-07 05:59:...
怎样删除表中前1万条
记录
--A:假設有主鍵
id
--a.删除表中前1万条
记录
(按
id
字段排序). --方法1:
delete
Table
Name where
id
in(select top 10000 ...
MySQL
56,802
社区成员
56,752
社区内容
发帖
与我相关
我的任务
MySQL
MySQL相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MySQL相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章