疏漏

今天幫一個系統調教效能,該系統在 COM+ 的元件中執行以下的語法

SELECT col FROM table WHERE Left(col,7)=’…’

這讓索引失效。隨著系統經年累月使用,資料累積後造成一句查詢要 10 幾秒,若可改成 WHERE col LIKE ‘…%’,在 col 加上索引後,瞬間可傳回資料,但卻改不動,原因如下:

  • 對資料的基本存取未用預存程序、檢視、函數等,直接埋在需編譯的程式碼內,導致事後缺乏調教的彈性
  • 沒有版控,以致無法更版。因為每個廠上線後,負責該廠的程設師依需求自行修改 COM+,但不會放回版控,現今握有的 Source 只知各廠的運行大概,若修改查詢語法,換上後可能導致該廠其他的功能有問題。程式碼太多,廠太多,版本太多,難盡全功。
  • 沒測試案例,只能改後準備接電話,無法預測可能的問題
  • 資料庫未有效 Archive,累積資料後一定會有問題。在多年前上線時,資料不多。用至今日才爆發出問題。

One Comment

  1. Aaron
    Posted 2010 年 07 月 13 日 at 08:38:34 | Permalink | 回覆

    嗯,老师分析的很有道理,所以以后无论做任何的系统开发,我学会注意三个方面:1.对资料的存取,尽量使用模块化的方式(SP,View,UDF…)来取代直接的程式内编码,方便事后调教。2.系统版本的控制。3.系统文档的整理要及时规范。再次感谢老师

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

%d 位部落客按了讚: