資料庫最佳化實務【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清單中避免不必要的列,在連接條件中避免不必要的表
以上就是資料庫優化實踐【TSQL篇】的內容,更多相關文章請關注PHP中文網(www.php .cn)!

如何通过数据库优化提高Python网站的访问速度?摘要在构建Python网站时,数据库是一个关键的组成部分。如果数据库访问速度慢,会直接影响网站的性能和用户体验。本文将讨论一些优化数据库的方法,以提高Python网站的访问速度,并附有一些示例代码。引言对于大多数Python网站来说,数据库是存储和检索数据的关键部分。如果不加以优化,数据库可能成为性能瓶颈。本

在MySQL数据库中,索引是一种非常重要的性能优化手段。当表中的数据量增加时,不适当的索引会导致查询变慢,甚至出现数据库崩溃的情况。为了提高数据库性能,在设计表结构和查询语句时需要合理地使用索引。而复合索引是一种较为高级的索引技术,通过将多个字段作为索引的组合来提高查询的效率。在本文中,将详细介绍如何通过使用复合索引来提高MySQL的性能。什么是复合索引复合

随着计算机技术的不断发展和数据规模的不断增长,数据库成为了一项至关重要的技术。然而,在Linux系统中使用数据库还会遇到一些常见的问题,本文将介绍一些常见的Linux系统中的数据库问题以及它们的解决方法。数据库连接问题在使用数据库时,有时会出现连接失败或连接超时等问题,造成这些问题的原因可能是数据库配置错误或者访问权限不足。解决方法:检查数据库的配置文件,确

从技术角度来看,为什么Oracle能够击败MySQL?近年来,数据库管理系统(DBMS)在数据存储和处理方面扮演着至关重要的角色。Oracle和MySQL作为两款流行的DBMS,一直以来都备受关注。然而,从技术角度来看,Oracle相对于MySQL在某些方面更为强大,因此Oracle能够击败MySQL。首先,Oracle在处理大规模数据时表现出色。Oracl

Java开发中如何解决数据库更新性能问题摘要:随着数据量的增加和业务的变化,数据库更新的性能问题成为了Java开发中一大挑战。本文将介绍一些常见的解决数据库更新性能问题的方法和技巧。关键词:Java开发,数据库,更新性能问题,解决方法引言:在大多数Java应用程序中,数据库扮演着重要的角色。数据库的性能直接影响了应用程序的响应速度和稳定性。而在实际开发中,数

随着互联网技术的快速发展和应用需求的日益增长,PHP的应用场景也越来越广泛。然而,在高并发、海量数据、复杂交互等场景下,传统的PHP编程方式已经不能满足开发需求。而微服务架构则成为了提升系统性能和可维护性的一种有效方式。基于微服务架构的PHP编程微服务架构(MicroserviceArchitecture)是一种面向服务的软件架构设计方式,它将应用按照业务

随着互联网的发展,越来越多的应用和网站面临的问题是如何处理高并发的场景。PHP作为目前最流行的编程语言之一,在高并发场景下也面临着诸多问题。其中一个重要问题就是数据库优化。数据库是网站应用的核心组成部分,如果没有良好的数据库设计和优化,网站的性能会受到严重影响,甚至会导致系统崩溃。下面是我在实践中总结的一些高并发场景下的PHP编程数据库优化实践,希望对开发者

如何优化自定义WordPress插件的数据库查询摘要:对于使用WordPress开发自定义插件的开发者来说,了解如何优化数据库查询是至关重要的。本文将介绍一些优化技巧,帮助开发者提高自定义插件的性能。导言:随着WordPress网站的增长和流量的增加,数据库查询的性能变得越来越关键。优化数据库查询可以显著提高网站的速度和响应时间,从而提供更好的用户体验。本文


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版
SublimeText3 Linux最新版