IT日常- SQL索引最佳化

更新於 2024/07/09閱讀時間約 3 分鐘

前言

因近期工作內容偏向SQL查詢效能調校以此篇作為調整紀錄(以下SQL系統為MSSQL)

系統查詢功能隨著資料的增多(約9500萬筆資料)導致原本設計的資料表查詢效能日漸緩慢,近期針對目前常用的查詢語法做了梳理以下幾個調校方法做整理,以下是針對已經有設定Index的情況下進一步調整。


服用Index前注意事項

優點:加速查詢的效率從原本的全表搜尋(Table Scan)機制改善為索引查詢(Index Seek)

缺點:建立的Index越多,在對資料進行新增/刪除/修改時,就會花越多時間來完成。 盡量避免對設定索引的欄位經常性的改動操作,會導致原先排續好的索引順序越零碎而影響查詢效能,必要時需定期使用重組排序讓原本零碎的索引重新排序以改刪查詢效能。


索引最佳化

1.覆蓋索引搜尋(Covering Index) :

意思是讓 Select 的欄位 = Index的欄位 當查詢被執行的時候,若需要的欄位全都在索引當中,則會直接將索引查到的內容回傳,減少回主表查詢缺少欄位所需要的I/O時間。

2.複合索引(Multiple Column Index) :

若設定索引時是用多個欄位組成,建議把「頻繁被作為查詢條件的欄位越左方越好」 因為在下Where查詢條件時會有索引的順序性才能吃到此索引 例如: 當初建立的複合索引是用欄位 A/B/C組合,在下Where條件是只能是以下的查詢組合才能吃到複合索引的效能

Select * from Table where A = 0 and B = 0 and C = 0 
Select * from Table where A = 0 and B = 0
Select * from Table where A = 0

以下順序無法吃到此索引功能

Select * from Table where B = 0 and C = 0 
Select * from Table where A = 0 and C = 0
Select * from Table where C = 0

3.索引涵蓋查詢欄位(Include Columns) :

在建立索引的語法中加入涵蓋的查詢欄位 例如以下查詢語法中,在LastName欄位新增Index

SELECT LastName, FirstName, Email 
FROM Student WHERE LastName = 'Dave'

改善前:

Index新增語法

CREATE NONCLUSTERED INDEX idx_nonclustered ON Student(LastName)

因為新增的索引僅包含 LastName 欄位的資訊但查詢的欄位還有FirstName, Email, SQL Server 必須通過查詢的回溯操作(或二次查詢)來檢索 FirstName 和 Email 的值。

意思是因為索引中只有加入LastName 所以用索引找到LastName的RowId時,會再用RowId回去取 FirstName 和 Email的值

改善後:

原本的Index內容改為

CREATE NONCLUSTERED INDEX idx_nonclustered ON Student(LastName) 
INCLUDE (FirstName, Email)

這時的查詢語法執行的邏輯就會變成一樣用LastName的索引找到資料後會一起把FirstName, Email值取出來,不需再用RowId做二次查詢回去撈FirstName, Email的值。


參考資料

SQL Worker

SQL Server 索引筆記

5個概念拯救龜速的SQL查詢(Query)

INCLUDE 關鍵字以提高查詢效能


avatar-img
9會員
24內容數
此篇教學 : 使用GitHub架設免費的部落格網站,搭上Hexo靜態模板,在主題頁面中尋找屬於自己的風格套版,輕鬆擁有自己的Blog外,加上留言板/SEO等設定在記錄生活同時也增進與讀者的互動頻率。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
DavidHi的沙龍 的其他內容
本篇文章講解了字符編碼的基礎知識,包括ASCII, Unicode 和 UTF-8的誕生背景、解決的問題以及轉換方式。瞭解這些知識有助於解決在讀檔案時用錯誤的編碼方式轉換就會出現亂碼等問題。文章內容涉及電腦技術中的字符編碼相關歷史緣由,可幫助讀者解決相關疑問。
本文介紹了在升級.NET專案時使用.NET Upgrade Assistant的方法,詳細說明瞭如何下載、安裝並使用此工具來實現跨版本升級,並提供了升版過程中的注意事項。
在專案中與廠商測試API回傳的json字串出現無法解析的狀況,記錄發現過程與解決的紀錄,提供程式面和檔案面的解決方法。
在API介接中使用x-www-form-urlencoded格式時,可能會遇到一些踩坑的情況,本文分享了作者在這方面遇到的問題和解決方法。
在工作情境中手動執行SQL語法更新中文字時,有時會遇到中文字顯示問號(?)的情況。這篇文章將介紹如何解決手動執行SQL語法時造成中文顯示問號(?)的方法。
本篇文章講解了字符編碼的基礎知識,包括ASCII, Unicode 和 UTF-8的誕生背景、解決的問題以及轉換方式。瞭解這些知識有助於解決在讀檔案時用錯誤的編碼方式轉換就會出現亂碼等問題。文章內容涉及電腦技術中的字符編碼相關歷史緣由,可幫助讀者解決相關疑問。
本文介紹了在升級.NET專案時使用.NET Upgrade Assistant的方法,詳細說明瞭如何下載、安裝並使用此工具來實現跨版本升級,並提供了升版過程中的注意事項。
在專案中與廠商測試API回傳的json字串出現無法解析的狀況,記錄發現過程與解決的紀錄,提供程式面和檔案面的解決方法。
在API介接中使用x-www-form-urlencoded格式時,可能會遇到一些踩坑的情況,本文分享了作者在這方面遇到的問題和解決方法。
在工作情境中手動執行SQL語法更新中文字時,有時會遇到中文字顯示問號(?)的情況。這篇文章將介紹如何解決手動執行SQL語法時造成中文顯示問號(?)的方法。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
文章(是引自人類圖設計的祖師爺作品)令我發出Wow! 雖然我未婚無子女,但文內談的孩子,何嘗不是指自己。也讓我感覺到對人我的釋放。 別人的憂傷,我自己的憂傷又如何。 投射者又是大乘佛教底子的我,很在乎這世界人們過得是否快樂。 曾有恨不得全世界都幸福快樂,不要有苦難的慨嘆生氣。 而認清
Thumbnail
該文章探討了疫情後自行車產業的變化,尤其是電動輔助自行車的成本結構和價格差異。藉由深入的角度探討了品牌管理能力、品牌價值和成本結構對產品定價的影響。
Thumbnail
隨著新混合式工作型態、數據分析、人工智能和資訊保護等趨勢發展,IT 與 HR 必須比過去更加緊密結合。身為 IT​​ 領導者,你了解與其他業務部門合作的重要性,也會確保你的團隊必須具有跟上產業所需技術,才能留住客戶與員工。因此,IT 與 HR 間需要重新建立新的合作關係。
Thumbnail
IT outsourcing has become a strategic tool that businesses leverage for enhanced efficiency and innovation.
Thumbnail
Startups face a common dilemma: how to grow rapidly and scale operations while managing the constraints of limited budgets.
Thumbnail
In today's data-driven world, the ability to manage and analyze large volumes of data has become a critical factor for enterprise success.
Thumbnail
In an age where digital data is the lifeblood of any organization, cybersecurity has become a non-negotiable aspect of business operations.
Thumbnail
開學第一日沒能記得教室位置,我越過大面積的水泥球場,與數棟建築與草地,穿越零散的人群,慌亂地在陌生的校區騎著車子找尋確切的教室位置...這樣緊張的夢已經不是第一次。著實痛苦的情緒讓我意識到這一點而突然抽離,不想再這樣憂煩的情況下,於是我醒來,夢境後來停留在這邊。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
文章(是引自人類圖設計的祖師爺作品)令我發出Wow! 雖然我未婚無子女,但文內談的孩子,何嘗不是指自己。也讓我感覺到對人我的釋放。 別人的憂傷,我自己的憂傷又如何。 投射者又是大乘佛教底子的我,很在乎這世界人們過得是否快樂。 曾有恨不得全世界都幸福快樂,不要有苦難的慨嘆生氣。 而認清
Thumbnail
該文章探討了疫情後自行車產業的變化,尤其是電動輔助自行車的成本結構和價格差異。藉由深入的角度探討了品牌管理能力、品牌價值和成本結構對產品定價的影響。
Thumbnail
隨著新混合式工作型態、數據分析、人工智能和資訊保護等趨勢發展,IT 與 HR 必須比過去更加緊密結合。身為 IT​​ 領導者,你了解與其他業務部門合作的重要性,也會確保你的團隊必須具有跟上產業所需技術,才能留住客戶與員工。因此,IT 與 HR 間需要重新建立新的合作關係。
Thumbnail
IT outsourcing has become a strategic tool that businesses leverage for enhanced efficiency and innovation.
Thumbnail
Startups face a common dilemma: how to grow rapidly and scale operations while managing the constraints of limited budgets.
Thumbnail
In today's data-driven world, the ability to manage and analyze large volumes of data has become a critical factor for enterprise success.
Thumbnail
In an age where digital data is the lifeblood of any organization, cybersecurity has become a non-negotiable aspect of business operations.
Thumbnail
開學第一日沒能記得教室位置,我越過大面積的水泥球場,與數棟建築與草地,穿越零散的人群,慌亂地在陌生的校區騎著車子找尋確切的教室位置...這樣緊張的夢已經不是第一次。著實痛苦的情緒讓我意識到這一點而突然抽離,不想再這樣憂煩的情況下,於是我醒來,夢境後來停留在這邊。