IT日常- SQL索引最佳化

閱讀時間約 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 關鍵字以提高查詢效能


9會員
24內容數
此篇教學 : 使用GitHub架設免費的部落格網站,搭上Hexo靜態模板,在主題頁面中尋找屬於自己的風格套版,輕鬆擁有自己的Blog外,加上留言板/SEO等設定在記錄生活同時也增進與讀者的互動頻率。
留言0
查看全部
發表第一個留言支持創作者!
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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
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
開學第一日沒能記得教室位置,我越過大面積的水泥球場,與數棟建築與草地,穿越零散的人群,慌亂地在陌生的校區騎著車子找尋確切的教室位置...這樣緊張的夢已經不是第一次。著實痛苦的情緒讓我意識到這一點而突然抽離,不想再這樣憂煩的情況下,於是我醒來,夢境後來停留在這邊。