程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> sql 如何從百萬條記錄中刪除某會員發布的N條記錄-sql檢索效率問題

sql 如何從百萬條記錄中刪除某會員發布的N條記錄-sql檢索效率問題

編輯:MySQL綜合教程

第一次執行,內存裡沒有緩存這些數據,需要從硬盤上讀取,所以會很慢。 第二次執行,數據已經進入了內存,就不需要從硬盤上讀取,直接從內存裡讀,所以很快

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幾秒 幾秒都有

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved