SQL的速度为什么这么慢??
各位大虾:应用中需要把原来表中的数据清理一下。
于是写了如下的SQL语句。但速度超过,数据量大约20万条。已经等了1个多小时,实在受不了啦,
请问各位大虾,有何提高执行速度的方法。
delete from wlk
where wlk.ID <
(select b.id from wlk b
where wlk.luhao like b.luhao)
为什么这么慢呢。
已在表WLK中建立了IX_LUHAO的索引。
[解决办法]
楼主的意思是想把每个luhao对应的最大的id过滤掉还是?
[解决办法]
楼主分开执行试一下,先查出id,然后再删除小于此id的数据,like很影响速度~~
[解决办法]
主你的法叫做重利用子查了:
建主行首先在表的位(luhao,id)上建立索引,然後用以下句行除:
delete a
from wlk as a left join
(select luhao,max(id) as id from wlk
group by luhao) as b on a.luhao = b.luhao and a.id = b.id
where b.luhao is null
其法有很多,比如:
delete a
from wlk as a
left join wlk as b on a.luhao = b.luhao and a.id <b.id
where b.luhao is not null
有主你本身的法也是一,只是大家行的效率不一。要一效率比高的,主行可以看看每句的行,如果你理解了行,那你在句的候就可以知道怎的句更有效率,有就是索引的建立要和你的情相,如果主行常表行操作,很好有其它作的,我建建立索引(luhao,id),如果有其它作,那就要再了。