1. 管理公司一台服務器,上面放的東西挺多的.有一天有個哥們告訴我現在程序卡的厲害.我給他說,是時候讀點優化的書了.別一天到晚沒個正形,現在寫的程序卡的跑不動.他說我本地
是好好的,跑的很快.我說別扯那么多沒用的,服務器不比你的本子強得多.待灑家上去看看.不看不知道一看嚇一跳,CPU占用在95上下.開個程序是不卡,可整點有些時間是卡的一匹.這就令人很難受了.
本來服務器上也沒有什么,就一個網站和幾個數據庫.那一個個分析吧,打開任務管理器和資源監視器,CPU占用達到93,這個還是普通,有時間到98 99.

2. 這不要了親命了嗎,打開資源監視器看看什么占用的最多吧.一看果然是數據庫占用最多,數據服務占用過大

這個為了重現占用過高,我把自己建的索引都刪除掉后,sqlservr.exe立馬成為,人群中最靚的仔.占用獨占大頭.看來只有試出來絕招了.作為面向瀏覽器編程的程序員,首先搜索一下.網上還真有建設性意見.都說是索引缺失
還貼心的給了一段查詢索引的語句.把查出的結果做非聚集索引,就可以了.貼上代碼.
SELECT TOP 10 [Total Cost] = ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans),0) , avg_user_impact , TableName = statement , [EqualityUsage] = equality_columns , [InequalityUsage] = inequality_columns , [Include Cloumns] = included_columns FROM sys.dm_db_missing_index_groups g INNER JOIN sys.dm_db_missing_index_group_stats s ON s.group_handle = g.index_group_handle INNER JOIN sys.dm_db_missing_index_details d ON d.index_handle = g.index_handle ORDER BY [Total Cost] DESC;
微軟名字起的也很直白,直接叫missing_index,就是sqlserver 經過分析認為這些字段處理和查詢是最耗時的,最好在 EqualityUsage上包含的字段上加個非聚集索引.前幾個用時是后幾名的好幾個數量級.
加了索引立馬飛起.

現在優化過,耗時都在一個數量級.如果沒有優化是不同的幾個數量級.
