sql 如何从百万条记录中删除某会员发布的N条记录-sql检索效率问题
sql 如何从百万条记录中删除某会员发布的N条记录-sql检索效率问题
delete from table200 where mid=xxxxxxx 超时
如果用 select * from table200 where mid=xxxxxxx 也是超时
但如果用 select top 100 * from table200 where mid=xxxxxxx 就很快就检索出来了
//解决方法一
删数据是其他索引都要进行更新
所以手动设置查询超时,可以使用以下语句:
sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
sp_configure 'query wait', 2147483647
GO
RECONFIGURE
GO
//解决方法二
既然 select top 100 * from table200 where mid=xxxxxxx 很快,那就试试
while 1=1
begin
set rowcount 100;
delete from table200 where mid=xxxxxxx;
if @@rowcount=0 break;
end
//方法三
select top 100 * from table200 where mid=xxxxxxx 0.x~10
//方法四
select * from table200 where mid=xxxxxxx 第一次查询50秒还没执行完 后面再执行 30几秒 10几秒 几秒都有
第一次执行,内存里没有缓存这些数据,需要从硬盘上读取,所以会很慢。
第二次执行,数据已经进入了内存,就不需要从硬盘上读取,直接从内存里读,所以很快
?>
您可能感兴趣的文章:
sql 如何从百万条记录中删除某会员发布的N条记录-sql检索效率问题
mysql索引的类型与优缺点
如何在生产环境mysql删除亿万级数据解并且不影响数据库主从延迟的解决方案
PostgreSQL从菜鸟到专家系列教程(5)什么是数据库管理系统
MySQL数据插入insert性能优化详解
mysql 随机获取记录order by rand 优化
如何创建mysql索引
mysql索引使用与优化
精解:MySQL UPDATE更新的语句
mysql limit 使用方法实例解析