如何最佳化sqlserver查詢分析的效能?

來源:互聯網
上載者:User
前段時間做了個資料分析系統,採用asp.net+sqlserver 2000。由於資料量即時採集,平均每秒鐘有2-3條資料插入。客戶工作日期間利用系統對資料進行相關分析。

在建表時的考慮,由於資料量大,最新資料放在history表中。經過手工處理後的部分資料或者根據條件自動處理後的資料(自動處理的資料大約佔所有資料的3/4左右。剩下的需要手工處理或者不處理。)放於對應月份的表中,如現在就放在back_8表中。每月份的備份資料即back表資料儲存一年時間。

現在就是建索引問題,效能最佳化問題。目前分析系統幾乎不可用,每次分析都要好幾分鐘才能出來。

一般跨月查詢比較少,查詢條件基本上不跨月。即使用者選擇的開始時間和結束時間均在同一月份。跨月查詢的效率暫不考慮,因為使用者用得少。

但是不跨月也要查兩張表,一張是history表,一張是back_當前月表。因為後面一張表名不確定,所以預存程序中很多使用了動態查詢語句,這樣才能傳表名。兩張表另外查詢,然後用union合并記錄。

一個就是site_name欄位,該查詢條件的參數也是一個列表,即使用者要求在介面中能多選site_name。現在介面中讓使用者選的資料是basecell表中的另外三個欄位,地區、縣市、基站。然後根據使用者選擇的(一到多個)在basecell中找出與site_name欄位匹配的site_name_all欄位。(使用者選擇的是中文基站,匹配的欄位是英文名的)。

所有分析用得最多的條件就是上面兩個。其餘還有一些比較不常用的條件如故障嚴重程度,這個條件才幾個選項的,比起前面兩個來我想可以不去管它吧。

整個情況就如上所說。

是不是site_name也使用in查詢導致速度慢?但是site_name列表不定,而且可能上百個上千個。所以非常不好最佳化。目前沒有思路。哪位高手有好的辦法?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.