1. 程式人生 > >普通索引和唯一索引的選擇

普通索引和唯一索引的選擇

一 查詢過程:普通索引是找到葉子節點,然後再葉子節點中二分法找到那條記錄,然後向後找,找不到就停止,然後回表。

唯一索引是找到一條就不找了,因為是唯一的。效能差別不到。

資料庫查詢記錄,首先是把這條記錄的所在的頁全部載入到記憶體中,16k,

二 更新過程:更新過程普通索引會用change buffer ,把修改語句放到記憶體中,然後等到合適的時候觸發merge,除了訪問這個資料頁會觸發外,會定期,也會資料庫shutdown的時候

change buffer 會存在記憶體中,也會存到磁碟。

唯一索引以為要判斷唯一性,首先會加重資料頁中的資料,所以會在記憶體中,也就沒有必要change buffer ,而普通索引就會用到change buffer ,

如果資料在記憶體中,這倆個沒什麼區別,如果不在記憶體中,區別就大了。

適用場景,寫多讀少。不然就會有反作用。

普通索引和唯一索引對於查詢沒有多大的區別,區別在於插入更新。

 上圖是page1在記憶體中,直接寫入,page2不在記憶體中,然後change buffer ,然後記錄日誌

 

更新不久後,當讀page 1,page 2,因為他們還在記憶體,page2進行merge,直接返回結果,存入磁碟