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幾秒 幾秒都有
第一次執行,內存裡沒有緩存這些數據,需要從硬盤上讀取,所以會很慢。
第二次執行,數據已經進入了內存,就不需要從硬盤上讀取,直接從內存裡讀,所以很快
?>