我的理解:書的目錄,根據目錄對應的頁碼可以迅速找到對應章節(但是具體原理並不是這麼簡單)
b+tree平衡樹是資料表預設的索引資料結構,建立表的時候必須設定主鍵,主鍵就會把表在磁碟上的儲存結構由整齊排列變成樹狀結構,也就是整個表,變成了乙個索引,也就是聚集索引。
1.唯一索引:不允許任何兩列具有相同索引值的索引
2.主鍵索引:是唯一索引的特定型別,該索引要求主鍵的每個值都唯一
3.聚集索引:表中行的物理順序與鍵值的邏輯順序相同,乙個表只能包含乙個聚集索引
聚集索引:這樣我們可以看到主鍵既是唯一索引也是主鍵索引和聚集索引,當查詢id的時候直接從平衡樹的最頂端開始搜尋,搜尋次數就是對數函式,這樣大大提高了效率。但是對於增加資料同時要新增索引,占用物理空間,每次增加後調整平衡樹平衡,動態維護索引,降低了資料的維護速度。
非聚集索引:通過非聚集索引可以查到記錄對應的主鍵值 , 再使用主鍵的值通過聚集索引查詢到需要的資料,相當於多了一層,但最後還是需要到聚集索引。
檢視資料庫是否具有索引:show index from 資料庫名.表名
主鍵id是帶有索引的,在一千萬條資料中進行查詢,所用時間為8秒,如果查詢其他字段,我試了,半個小時沒結果。
優點:
1.避免進行資料庫全表的掃瞄。
2.聚集索引可以避免資料插入操作,集中於表的最後乙個資料頁面。
3.在某些情況下,索引可以避免排序操作。
缺點:
1.建立索引和維護索引要耗費時間,這種時間隨著資料量的增加而增加。
2.索引需要佔物理空間,除了資料表佔資料空間之外,每乙個索引還要佔一定的物理空間。
3.當對表中的資料進行增刪改時,索引也要動態的維護,這樣就降低了資料的維護速度。
索引優化文章:《mysql索引》
資料庫索引 引入
資料庫索引的通俗理解 為什麼需要索引?索引就像書的目錄,通過書的目錄就準確的定位到了書籍具體的內容 資料在磁碟上是以塊的形式儲存的。為確保對磁碟操作的原子性,訪問資料的時候會一併訪問所有資料塊。磁碟上的這些資料塊與鍊錶類似,即它們都包含乙個資料段和乙個指標,指標指向下乙個節點 資料塊 的記憶體位址,...
資料庫 索引基礎入門
索引就像是書的目錄,是與表或檢視關聯的磁碟上結構,可以加快從表或檢視中檢索行的速度。索引中包含由表或檢視中的一列或多列生成的鍵。這些鍵儲存在乙個結構 btree 中,使sql可以快速有效地查詢與鍵值關聯的行。建立索引的列可以保證行的唯一性,生成唯一的rowid 建立索引可以有效縮短資料的檢索時間 建...
資料庫索引學習
資料庫索引是對資料庫中的表一列或者多列進行排序的儲存結構 代價 增加了資料庫的儲存空間 在插入和修改資料時要花費較多的時間 因為索引也要隨之變動 概念 對資料重新組織按照指定的乙個或者多列排序 特點 索引和資料儲存在一起,找到了索引也就找到了資料 表資料按照索引的順序來儲存的,也就是說索引項的順序與...