共計 1086 個字符,預計需要花費 3 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章將為大家詳細講解有關建立索引能提升表中數據查詢的速度嗎,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
首先明白為什么索引會增加速度,DB 在執行一條 Sql 語句的時候,默認的方式是根據搜索條件進行全表掃描,遇到匹配條件的就加入搜索結果集合。
如果我們對某一字段增加索引,查詢時就會先去索引列表中一次定位到特定值的行數,大大減少遍歷匹配的行數,所以能明顯增加查詢的速度。(推薦學習:MySQL 視頻教程)
添加索引的話,首先去索引列表中查詢,而我們的索引列表是 B 類樹的數據結構,查詢的時間復雜度為 O(log2N),定位到特定值得行就會非常快,所以其查詢速度就會非常快。
為什么說 B +-tree 比 B 樹更適合實際應用中操作系統的文件索引和數據庫索引?
1) B+-tree 的磁盤讀寫代價更低
B+-tree 的內部結點并沒有指向關鍵字具體信息的指針。因此其內部結點相對 B 樹更小。如果把所有同一內部結點的關鍵字存放在同一盤塊中,那么盤塊所能容納的關鍵字數量也越多。一次性讀入內存中的需要查找的關鍵字也就越多。相對來說 IO 讀寫次數也就降低了。
舉個例子,假設磁盤中的一個盤塊容納 16bytes,而一個關鍵字 2bytes,一個關鍵字具體信息指針 2bytes。一棵 9 階 B -tree(一個結點最多 8 個關鍵字) 的內部結點需要 2 個盤快。而 B + 樹內部結點只需要 1 個盤快。當需要把內部結點讀入內存中的時候,B 樹就比 B + 樹多一次盤塊查找時間 (在磁盤中就是盤片旋轉的時間)。
2) B+-tree 的查詢效率更加穩定
由于非終結點并不是最終指向文件內容的結點,而只是葉子結點中關鍵字的索引。所以任何關鍵字的查找必須走一條從根結點到葉子結點的路。所有關鍵字查詢的路徑長度相同,導致每一個數據的查詢效率相當。
索引
使用索引可快速訪問數據庫表中的特定信息。索引是對數據庫表中一列或多列的值進行排序的一種結構,例如 employee 表的姓(lname)列。如果要按姓查找特定職員,與必須搜索表中的所有行相比,索引會幫助您更快地獲得該信息。
注意:并非所有的數據庫都以相同的方式使用索引。
作為通用規則,只有當經常查詢索引列中的數據時,才需要在表上創建索引。索引占用磁盤空間,并且降低添加、刪除和更新行的速度。在多數情況下,索引用于數據檢索的速度優勢大大超過它的。
關于建立索引能提升表中數據查詢的速度嗎就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
向 AI 問一下細節
丸趣 TV 網 – 提供最優質的資源集合!