程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server性能調優雜記(二)----傻瓜機的失效效應續

SQL Server性能調優雜記(二)----傻瓜機的失效效應續

編輯:關於SqlServer

上文說道了失效效應。只想說明在Performance Tunning方面只能根據情況來尋求原因並解決。這是一 個有意思的過程。大原則是經驗,幫助我們少犯錯誤。因此,糟糕的設計,必然導致性能問題。沒有經驗 的程序員必然會寫出糟糕的代碼。但是良好的設計可以彌補程序員的經驗不足。這個到此打住,這個 topic涉及品質管理,實在太大了。

再看一例,失效效應的體現。

還是上文數說道了2種SQL文 寫法產生的執行計劃。我選用一台雙核的PC,相當於2個單核CPU。

有一個大表TB_CWB。記錄約30 -40萬。(在生產環境下屬於小數據量,在我的測試中可以看成大表)。表上已經對fn_Clt_Datetime 做 了索引。

1.SQL文一

  select CWB_No,fn_Clt_Datetime,acctId_guid,fn_OrigZone_Id,DestSZMCode,DestZone_Id,CWBType,fn_Clt_Dat etime,fn_cwbtype,
   PayType,Payweight,StdPriceweight,StdFreight,IsCalculated,AFterDsctFreight,
   SchgFreight,InvcFreight,Salesamount,SchgDetail,SchgFreight_Remarks
  from OCS_TB_CWB
  WHERE
  fn_Clt_Datetime between '2008-9-1' and '2008 -9-16'

運行結果,發現奇慢無比。需要12秒才能出結果。

檢查執行計劃,發 現用了聚集索引掃描(主鍵),就是相當於選擇了全表掃描的計劃。因為CBO認為這句SQL比動用索引還要 快。見下圖

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved