1、删除的条件判断占用了很久,比如删除的条件用不到任何索引且不是主键。
2、删除的表中建立了索引而且数据量比较大,每次删除都要更新很多索引信息。
3、可能单纯的删除的数据量比较大。
4、可能数据库同时在执行其他消耗很大的 *** 作。
DELETE A FROM talbeName AS AWHERE EXISTS ( SELECT 1
FROM (SELECT TOP 100 ID FROM talbeName ) AS B
WHERE (A.ID=B.ID) )
字符类型的ID要复杂些,如果ID是int类型的就更好办了。
删除数据很慢。实在没有办法的话,你可以把删除命令写成sql,然后用数据库命令行工具进行删除,要快速很多倍。比如mysql,用它的命令行比自己删除要快,比批量commit还要快很多。添加数据与删除数据都可以这么做。直接用sql比通过关系对象模型要快。的确删除几万,几十万条记录比添加数据要慢很多。这在mysql上比较明显。
如果对数据处理效率要求很高,可以将这部分数据缓存到memcached里,再删除就很快了。就象是硬盘前加一个SSD盘一样。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)