简单的说就是这个 select top(20) * from( select *, rowid = row_number() over(order by xxx) from tb with(nolock) ) data where rowid > 0 order by rowid 或者这样写 select * from( select *, rowid = row_number() over(order by xxx) from tb with(nolock) ) data where rowi…
最近项目有个需求,把一张表中的数据根据一定条件增删改到另外一张表.按理说这是个很简单的SQL.可是在实际过程中却出现了超级长时间的执行过程. 后来经过排查发现是大数据量insert into xx select造成. 原因在于当insert into xx select数据量达到10万级别,同时又有Update和Delete操作表.容易造成锁表. 经过研究重构了SQL语句问题解决.具体解决方案如下: 1.update 和Delete操作当成一个事务处理 2.Insert into前先删除索引 3…