|
首頁 | 討論區 | 最新話題 | 搜尋 | XML | 登入 |
![]() |
Blueimp » 列出所有討論區 » 討論區: SQL |
![]() |
|
此話題中所有文章數: 1 [ 話題狀態: 一般 ] | |
|
發現 Reporting Service 的 bug!!!MS SQL 教學是不是發現你的 RS 報表跑時快時慢呢? 據我今天親手上了一個百萬雄兵的報表,發現如果是查得到的資料沒問題,但是如果是查不到的資料就要跑非常非常久! P.S. 我測試的資料有7000多萬筆! 之前我請台柱設計了監控報表發現了交易明細類有些報表(數千萬筆資料)大部分很快,但是偶爾會慢到想砍了它!最後只好想了一個比率公式放他一條生路,表示大部份不會很慢~ 進入主題...... 問題出在哪呢? 以這麼一個簡單的範例 select top 10 * from col_rec where custid = @custid col_rec 這個 Table 有七千萬筆資料,我只是要透過報表系統的參數 @custid 抓到 top 10 的資料,但是如果我亂輸入如 A 或 A123456789 這類不存在於七千多萬筆資料內的條件,Reporting Service 會跑數分鐘。 但是如果我乖乖地輸入找得到的資料,1秒看到答案!!! 怎麼可以這樣!我怎麼要求 User 一定要輸入已經存在的資料勒! 我回到 SQL Client 測試 select top 10 * from col_rec where custid = 'A' ㄆ一ㄚ˙地就出現!!!我傻了~這不是資料庫也不是 index 的問題... 那如果是 M$ Reporting Service 的問題,小茲他又不理我,那我也不能拒絕 User 要求要查詢報表,我必須在1小時內想出破解之法,於是乎我喝了口綠茶突然靈光乍現! 既然 DB 吃條件沒問題,那我就不要讓你 RS 直接找我老闆! declare @sql_custid varchar(10) set @sql_custid = @custid select top 10 * from coldata.dbo.col_rec where custid = @sql_custid 就這樣我又再次沒有辜負我媽把我生到這世上來了~ ![]() ![]() ---------------------------------------- 支持小惡魔 BTC : 19tn3RnCuwZVukXAwyhDWZD4uBgUZoGJPx LTC : LTFa17pSvvoe3aU5jbmfcmEpo1xuGa9XeA 知識跟八卦一樣,越多人知道越有價值;知識最好的備份方法,散播! 藍色小惡魔(林永傑): 臉書 ---------------------------------------- [編輯文章 2 次, 最後修改: jieh 於 2009/11/25 上午 02:32:44] |
|||
|