目前創(chuàng)新互聯(lián)建站已為成百上千的企業(yè)提供了網站建設、域名、網站空間、網站托管維護、企業(yè)網站設計、東遼網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
經現(xiàn)場同事反映,他們用的好好的XML 導出工具最近一直報錯,經常報數據庫連接超時,查看數據庫發(fā)現(xiàn)已經有100G 以上有空間了。
但導出數據的存儲過程里面每次按時間只導1000多條數據,近理說有時間過濾應該不會產生問題。
將存儲過程拉到SQL SERVER 中執(zhí)行,發(fā)現(xiàn)需要5分鐘,
--創(chuàng)建臨時表用來存放數據create table #temp( id varchar(10), name varchar(20), zg_id varchar(10), ks_id varchar(10) )--按時間段插入數據insert into #temp(id,name)select id,name from tb1(nolock)where beginTime between '20150606' and '20150706'--按已有的數據關聯(lián)其它表,補全其它數據update #tempset zg_id=b.idfrom #temp a,tb_zg b(nolock)where a.zg_id=b.idupdate #tempset ks_id=b.idfrom #temp a,tb_ks b(nolock)where a.ks_id=b.id
而查詢出來的數據只有幾千條。
仔細分析得知,剛開始存儲過程將三張表的數據插入到一個臨時表然后再做處理。
經過查詢發(fā)現(xiàn)三張表每張表的數據都超過700萬行,每張表的關聯(lián)字段都是主鍵,且第一張表已經用時間段來過慮,也就是說只查詢第一張表,且按時間段來過慮的話不到一秒。
因些我把第一張表的數據插入到臨時表。