T-SQL筆記3_索引觀念 和 B-Tree(SQL))_Performance Tuning技巧

想想當我們以前在使用國語辭典時若不透過部首、筆劃來查對應出現頁數時 此時一定是從第一頁慢慢翻直到找到目標為止 因此索引在日常生活中很常用到 包括以前常見的電話簿用姓名筆劃、住址來排 書本前面的章節用字母來排序等等 結構化查詢一般的運作 採用 Full-Scan 機制 或 循序搜尋(Sequential Search) -->未先排序 也就是 當你要在一萬筆資料群的資料表中查找到特定匹配條件的 單筆或多筆資料時 會 從頭掃描整張表一遍 直到查詢到目標為止。 想當然這種查詢是十分沒有效率的!! 所以在資料結構應用上使用不同演算做法 會有不同回饋!!! 舉例: 同樣一組數據序列 用不同查詢下所產生的比對次數就有明顯的差異 循序(線性)查詢 非循序(非線性)查詢 E.g. 二元(分/岔) 資料庫之索引 這裡我們拿一本書最後頭的索引 來做一個生活例子比擬 你會看到一些常看或市面上書籍 後面都會有依照可能是英文字母開頭做排序的 以中文字典的部分則可能是用 部首、注音、筆畫 去做查詢索引 https://www.prismnet.com/~hcexres/textbook/indexing.html http://gimilee.pixnet.net/blog/post/209620930-大推薦-全方位造詞造句大詞典 藉由 Index 我們可以更快速找到我們想要的目標開頭為X的字眼 在SQL Server這部分是採用 B-Tree(B型束狀結構) B樹(B-Tree) 在你瞭解這個名詞前 可能需要先有關於樹的一些先備知識 Tree資料結構專術語(行話)介紹: 1.節點(Node):每一項data(資料值) -->A ,B ,C......,L 2.樹根(Root):每一棵樹最上層之節點 --> A 3.子樹(Sub Tree):去除樹根(A)後 , 所剩之以B、C、D為樹根之三棵樹也就是「子樹」 4.邊(Edge):節點之間的連線。 5.樹葉(Leaf):下方無串接任一節點(最末端)。換言之,就是分支度為0的節點,又稱終端節點。 6.樹林(Forest):去除樹根後剩餘的部分(三個...