台灣最大程式設計社群網站
線上人數
1755
 
會員總數:241166
討論主題:186825
歡迎您免費加入會員
討論區列表 >> MS SQL >> 資料庫在大量資料篩選的時候變很慢
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
資料庫在大量資料篩選的時候變很慢
價值 : 100 QP  點閱數:127 回應數:1

樓主

Chris
門外漢
0 2
50 0
發送站內信

我在MSSQL 2016 上面寫了一個篩選程序
速度慢到不行, 請幫忙指導改進方法
select @count = count(UID) from TABLE1 where IsProcess = 0
while @count > 0
begin
Declare @Name nvarchar(100)
Declare @UID int
select Top 1 @UID = UID, @Name = Name from Table1 where IsProcess = 0

set @UID2 = ISNULL((select TOP 1 UID from TABLE2 where Name like N'%' + @Name + N'%'), 0)
if @UID2 > 0
begin
insert into tablerelation (UID1, UID2) values(@UID, @UID2)
end

update TABLE1 set IsProcess = 1 where UID = @UID

select @count = count(UID) from TABLE1 where IsProcess = 0

end

TABLE1 共用500萬筆資料
cpu 不到10%
memory 3G (系統有8G)

沒有其他的作業

原本預期至少要有秒200筆
現在每秒只剩下3,4筆
是否有解?
感激不盡



搜尋相關Tags的文章: [ MSSQL ] , [ 大量資料 ] ,
本篇文章發表於2017-11-11 23:04
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

Daimom
捐贈 VP 給 Daimom 檢舉此回應
請多利用程式標籤

你最後一段

改成 set @count = @count+1
減少table的查詢

另外請你確定是否有設定索引
本篇文章回覆於2017-11-14 08:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.