国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

數據庫優化實踐【TSQL篇】

2024-07-21 02:51:14
字體:
來源:轉載
供稿:網友

  數據庫優化實踐【TSQL篇】
  在前面我們介紹了如何正確使用索引,調整索引是見效最快的性能調優方法,但一般而言,調整索引只會提高查詢性能。除此之外,我們還可以調整數據訪問代碼和TSQL,本文就介紹如何以最優的方法重構數據訪問代碼和TSQL。

  第四步:將TSQL代碼從應用程序遷移到數據庫中

  也許你不喜歡我的這個建議,你或你的團隊可能已經有一個默認的潛規則,那就是使用ORM(Object Relational Mapping,即對象關系映射)生成所有SQL,并將SQL放在應用程序中,但如果你要優化數據訪問性能,或需要調試應用程序性能問題,我建議你將SQL代碼移植到數據庫上(使用存儲過程,視圖,函數和觸發器),原因如下:

  1、使用存儲過程,視圖,函數和觸發器實現應用程序中SQL代碼的功能有助于減少應用程序中SQL復制的弊端,因為現在只在一個地方集中處理SQL,為以后的代碼復用打下了良好的基礎。

  2、使用數據庫對象實現所有的TSQL有助于分析TSQL的性能問題,同時有助于你集中管理TSQL代碼。

  3、將TS QL移植到數據庫上去后,可以更好地重構TSQL代碼,以利用數據庫的高級索引特性。此外,應用程序中沒了SQL代碼也將更加簡潔。

  雖然這一步可能不會象前三步那樣立竿見影,但做這一步的主要目的是為后面的優化步驟打下基礎。如果在你的應用程序中使用ORM(如NHibernate)實現了數據訪問例行程序,在測試或開發環境中你可能發現它們工作得很好,但在生產數據庫上卻可能遇到問題,這時你可能需要反思基于ORM的數據訪問邏輯,利用TSQL對象實現數據訪問例行程序是一種好辦法,這樣做有更多的機會從數據庫角度來優化性能。

  我向你保證,如果你花1-2人月來完成遷移,那以后肯定不止節約1-2人年的的成本。

  OK!假設你已經照我的做的了,完全將TSQL遷移到數據庫上去了,下面就進入正題吧!

  

第五步:識別低效TSQL,采用最佳實踐重構和應用TSQL

  由于每個程序員的能力和習慣都不一樣,他們編寫的TSQL可能風格各異,部分代碼可能不是最佳實現,對于水平一般的程序員可能首先想到的是編寫TSQL實現需求,至于性能問題日后再說,因此在開發和測試時可能發現不了問題。

  也有一些人知道最佳實踐,但在編寫代碼時由于種種原因沒有采用最佳實踐,等到用戶發飆的那天才乖乖地重新埋頭思考最佳實踐。

  我覺得還是有必要介紹一下具有都有哪些最佳實踐。

  1、在查詢中不要使用“select *”

  (1)檢索不必要的列會帶來額外的系統開銷,有句話叫做“該省的則省”;

  (2)數據庫不能利用“覆蓋索引”的優點,因此查詢緩慢。

  2、在select清單中避免不必要的列,在連接條件中避免不必要的表


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贵德县| 乐平市| 上林县| 鄄城县| 松潘县| 灵宝市| 育儿| 赤水市| 翁牛特旗| 苗栗县| 肥乡县| 巴南区| 肥东县| 通辽市| 邯郸县| 专栏| 长乐市| 汶上县| 凯里市| 新乡市| 新河县| 广汉市| 瓦房店市| 云南省| 崇礼县| 巴林右旗| 宜春市| 岐山县| 隆昌县| 麟游县| 新泰市| 滦南县| 通道| 盐津县| 沂水县| 天祝| 陵川县| 太仓市| 孟津县| 岳西县| 温州市|