国产探花免费观看_亚洲丰满少妇自慰呻吟_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清單中避免不必要的列,在連接條件中避免不必要的表


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平武县| 汝州市| 理塘县| 阿坝县| 台中县| 迭部县| 泌阳县| 榕江县| 通州区| 师宗县| 扶沟县| 酒泉市| 景洪市| 当涂县| 呼伦贝尔市| 夏邑县| 鲁山县| 洛浦县| 惠来县| 华池县| 余干县| 礼泉县| 承德市| 新干县| 石嘴山市| 常山县| 潞城市| 绥化市| 惠安县| 石泉县| 浏阳市| 绥阳县| 桓台县| 杭州市| 英德市| 若羌县| 军事| 康保县| 永丰县| 磴口县| 永丰县|