索引的作用、為什麼能提高檢索速度?

MaChao發表於2020-11-14
  • 索引可以提高MySQL的檢索速度。
  • 實際上,索引也是一張表,該表儲存了主鍵與索引欄位,並指向實體表的記錄。

為什麼能提高檢索速度

  • 索引就是通過事先排好順序,從而在查詢時可以應用二分查詢等高效率的演算法。
  • 一般的順序查詢,複雜度為O(n),而二分查詢複雜度為O(log2n)。
  • 一個或多個欄位需要頻繁用作查詢條件,建立索引會明顯提高查詢速度,因為可由全表掃描改成索引掃描。
  • 無索引時全表掃描也就是要逐條掃描全部記錄,直到找完符合條件的,索引掃描可以直接定位
  • 不管資料表有無索引,首先在SGA的資料緩衝區中查詢所需要的資料,如果資料緩衝區中沒有需要的資料時,伺服器程式才去讀磁碟。
  • 1、無索引,直接去讀表資料存放的磁碟塊,讀到資料緩衝區中再查詢需要的資料。
  • 2、有索引,先讀入索引表,通過索引表直接找到所需資料的實體地址,並把資料讀入資料緩衝區中。

索引缺點

  • (1)索引是有大量資料的時候才建立的,沒有大量資料反而會浪費時間,因為索引是使用二叉樹建立.
  • (2)當一個系統查詢比較頻繁,而新建,修改等操作比較少時,可以建立索引,這樣查詢的速度會比以前快很多,同時也帶來弊端,就是新建或修改等操作時,比沒有索引或沒有建立覆蓋索引時的要慢。
  • (3)索引並不是越多越好,太多索引會佔用很多的索引表空間,甚至比儲存一條記錄更多。
  • 對於需要頻繁新增記錄的表,最好不要建立索引,沒有索引的表,執行insert、append都很快,有了索引以後,會多一個維護索引的操作,一些大表可能導致insert 速度非常慢。

相關文章

www.cnblogs.com/qlqwjy/p/7767279.h...

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章