關於統計頁面的最佳化之Oracle(附上LECCO SQL Expert Pro for Oracle地址)

來源:互聯網
上載者:User

     最近一段時間在做一個統計頁面的最佳化工作,項目接近尾聲,所以把其中的一些最佳化的心得與大家分享。首先介紹一下這個項目的環境,由於這是一個老項目,而且開發人員基本上都不在了,採用的是ASP+ORACLE,OH MY GOLD!頁面主要的功能是對信件的各種狀態進行統計(一共有13個狀態),在沒有最佳化之前,頁面的訪問速度那叫一個慢啊,基本上統計一個月的信件數量需要5分鐘的時間或者更長,所以最佳化效能就成為了必然。我們將分步驟的對功能進行最佳化。

  1. 我們將在oracle資料庫中為要做查詢語句中的欄位建立索引,這一步應該自然而然就會想到的,因為建立索引可以大大提高系統的效能。友情提醒:千萬不要盲目的建立索引,有時候會得不償失。
  2. 在sql語句中加入oracle hints,之所以用到了這個是因為使用到了一個工具LECCO SQL Expert Pro for Oracle(),這個工具將為我們對SQL語句不同的組合進行篩選(在SQL RUN Time中會羅列出系統給出方案的消耗時間),並且將oracle hints直接運用到其中,使用者可以選擇時間消耗最少的SQL語句。工具使用起來非常容易,也為我們的最佳化工作節省的不少時間。(工具的為:http://files.cnblogs.com/wangqi/LeccoSQLExpertForOracle_1.rar,http://files.cnblogs.com/wangqi/LeccoSQLExpertForOracle_1.rar)

 

  1. 當我們對SQL語句最佳化完了之後,就是要開始對頁面進行處理了,由於頁面中使用了大量的嵌套迴圈,所以我們的原則是減少迴圈的次數,因為嵌套的迴圈越多,效率越低。能用SQL函數的盡量在SQL語句中完成,不要拋到頁面中執行。由於頁面代碼並交淩亂,所以我們還要對頁面代碼進行整理,雖然不一定起到什麼作用,但是整理後的代碼看起來會比較清爽。
  2. 通過上面的步驟,我們完成了最佳化的大部分工作,但是結果並沒有像我們想象中的一樣,頁面還是訪問的很慢。這讓我們很鬱悶,直到我們使用的複合式索引後,情況變得大大改觀,我們之前只是單一的為每個欄位建立索引,但是這次我們要將這些索引按一定的順序組合起來(),這裡我要強調的是索引的順序必須從後往前的也就是說是按SQL語句中從最後一個條件往前推。(當條件只有一個的情況下,oracle也會根據自己的最佳化策略適當的選用我們建立的這個複合式索引)

   

  通過使用複合式索引,我們訪問的頁面的速度大大提高,現在不管是一個季度還是一整年的信件統計,基本上都只需要1秒鐘的時間。呵呵~~~ 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.