文章目錄
- 索引概念?
- 索引演示?
- 索引的優劣?
- 為什么使用索引就快?
- 本篇小結
更多相關內容可查看
索引概念?
索引(index)是幫助MySQL高效獲取數據的數據結構(有序)。在數據之外,數據庫系統還維護著滿足特定查找算法的數據結構,這些數據結構以某種方式引用(指向)數據, 這樣就可以在這些數據結構上實現高級查找算法,這種數據結構就是索引。
一提到數據結構,大家都會有所擔心,擔心自己不能理解。不過在這里大家完全不用擔心,下文會詳細介紹。
索引演示?
表結構及其數據如下:
假如我們要執行的SQL語句為 : select * from user where age = 45
無索引情況
在無索引情況下,就需要從第一行開始掃描,一直掃描到最后一行,我們稱之為 全表掃描,性能很低。
有索引情況
如果我們針對于這張表建立了索引,假設索引結構就是二叉樹,那么也就意味著,會對age這個字段建立一個二叉樹的索引結構。
此時我們在進行查詢時,只需要掃描三次就可以找到數據了,極大的提高的查詢的效率。
索引的優劣?
優勢
- 提高數據檢索的效率,降低數據庫的IO成本
- 通過索引列對數據進行排序,降低數據排序的成本,降低CPU的消耗
劣勢
索引列也是要占用空間的 索引大大提高了查詢效率,同時卻也降低更新表的速度,如對表進行INSERT、UPDATE、DELETE時,效率降低
為什么使用索引就快?
- 減少數據掃描: 索引是一種數據結構,能夠快速定位到數據中符合特定條件的記錄。通過使用索引,數據庫引擎可以直接跳過大部分數據,只掃描索引中符合查詢條件的記錄,從而大大減少了數據掃描的量,提高了查詢速度。
- 減少磁盤 I/O: 索引通常存儲在內存中,因此可以減少對磁盤的訪問次數。當數據庫引擎需要從磁盤讀取數據時,如果使用了索引,它可以首先定位到索引中的位置,然后再讀取相應的數據塊,從而減少了磁盤I/O 操作的次數,提高了查詢效率。
- 提高數據檢索效率: 索引能夠將數據按照特定的排序方式組織起來,從而加快數據的檢索速度。例如,對于 B 樹索引,數據庫引擎可以利用其平衡樹結構進行快速的二分查找,從而快速定位到符合條件的記錄。
- 避免全表掃描: 在沒有索引的情況下,數據庫引擎可能需要對整個表進行掃描來找到符合查詢條件的記錄,這會消耗大量的時間和資源。而使用索引可以避免全表掃描,使查詢變得更加高效。
- 優化排序和連接操作: 索引不僅可以加速數據的查找,還可以優化排序和連接操作。例如,如果查詢需要對結果進行排序或者執行連接操作,索引可以提供已排序的數據或者幫助優化連接順序,從而加速查詢的執行。
本篇小結
本篇提供索引描述內容,可以快速理解什么是索引及其所體現的功能
其他索引的相關問題鏈接如下
索引結構(B-Tree,B+Tree,Hash,二叉樹)
索引分類(主鍵索引、唯一索引、普通索引、全文索引)
索引語法