最近有乙個新任務,在乙個表裡一下更新700w條資料。由於這個表業務正在使用,而且sql server做了完整日誌記錄。
修改了一下更新sql,分批更新,每次60w。
declare
@num
intset
@num=0
while
@num
<
7000000
begin
update
t set
usecustomersysno
=c.sysno,validtimefrom='
2011-09-07
',rowmodifydate
=getdate
(),validtimeto='
2011-09-12 23:59:59.000
'from
(select
validtimeto,rowmodifydate, validtimefrom, sysno,usecustomersysno,row_number()
over
(order
bysysno) rn
from
dbo.coupon
where
batchno
=623
) tinner
join
(select
sysno,row_number()
over
(order
bysysno) rn
from
customer
where
registertime
<
'2011-9-6
') c
onc.rn
=t.rn
andt.rn
>=
@num
andt.rn
<
@num
+600000
set@num
=@num
+600000
end更新過程中,的確存在堵塞前台更新表的情況,但由於這個時間比較快,堵塞也就不多!
刪除歷史資料:
while1=
1begin
delete
top(
500000
)
from
product_dailyclick
where
clickdate
<
'2011-01-01'if
@@rowcount
<
500000
break
;end
mysql大批量更新資料
大批量的更新資料如果再使用傳統的 update 方法一條一條的更新,效率是很慢的,而且效能差,也很容易造成阻塞。1 使用mysql 自有的語句構建批量更新 update tble set price case id when 16 then 7.6 when 19 then 8.86 when 20...
solr大批量資料匯出
需求 有100個core,每個core4000w資料量。把所有資料匯出來。方案1.直接對每個core通過httpsolrclient先取出總條數,然後通過每次分頁讀n行,直到讀完,這個方案肯定不行,因為越到後面,讀取速度越慢,不用想都要很長時間。方案2.深度分頁 通過游標,可以使分頁速度很快。sol...
MySQL大批量插入資料
1.對於myisam型別的表,可以通過以下方式快速的匯入大量的資料。alter table tblname disable keys loading the data alter table tblname enable keys 這兩個命令用來開啟或者關閉myisam表非唯一索引的更新。在匯入大量...