mysql索引知識備註

2021-09-12 05:19:48 字數 900 閱讀 5803

mysql索引分類

innodb和myisam預設的索引是btree索引;而mermory預設的索引是hash索引。

myisam葉子節點儲存的是表的位址,所以說資料檔案和索引檔案是分開的,也稱為非聚集

innodb不同,主索引它的葉子節點儲存的並不是表的位址,而是資料。輔助索引葉子節點儲存的是主鍵的資訊。稱為聚集索引。

在利用輔助索引的時候,檢索到主鍵資訊,然後再通過主鍵去主索引中定位表中的資料,所以主鍵不宜用過長的字段,由於所有的輔助索引都包含主索引,很容易讓輔助索引變得龐大。

btree索引中的最左匹配原則:

btree是按照從左到右的順序來建立搜尋樹的。比如索引是(name,age,***),會先檢查name欄位,如果name欄位相同再去檢查後兩個字段。

所以當傳進來的是後兩個欄位的資料(age,***),因為建立搜尋樹的時候是按照第乙個字段建立的,所以必須根據name欄位才能知道下乙個欄位去**查詢。

所以傳進來的是(name,***)時,首先會根據name指定搜尋方向,但是第二個字段缺失,所以將name欄位正確的都找到後,然後才會去匹配***的資料。

建立索引的規則:

1、利用最左字首:mysql會一直向右查詢直到遇到範圍操作(>,<,like、between)就停止匹配。比如a=1 and b=2 and c>3 and d=6;此時如果建立了(a,b,c,d)索引,那麼後面的d索引是完全沒有用到,當換成了(a,b,d,c)就可以用到。

3、盡量擴充套件索引而不要新建索引

4、最適合的索引的列是出現在where子句中的列或連線子句中指定的列。

5、不同值較少的列不必要建立索引(性別)。

參考:hash索引和btree索引

btree索引詳解

mysql索引知識 mysql索引必會知識點

聚簇索引和非聚簇索引 主要區別在於組織索引的結構是否和資料儲存的結構一樣。一般再innodb中主鍵索引就是聚簇索引,沒有主鍵會預設生成隱藏主鍵字段。理論上也可以指定其他欄位為聚簇索引,聚簇索引也不必唯一。主鍵索引和普通索引 我們都知道,innodb引擎下的儲存結構為b 樹,也就是說首先根據key值一...

mysql 寫備註 mysql怎麼新增備註

具體方法 1 建立表的時候,新增表名備註和字段備註create table healerjean comment id bigint 20 not null auto increment,name varchar 32 not null comment 名字備註 email varchar 64 n...

mysql索引技術 MySQL索引知識介紹

前言 索引是mysql資料庫中的重要物件之一,索引的目的在於提高查詢效率。可以模擬字典中的目錄,查詢字典內容時可以根據目錄查詢到資料的存放位置,然後直接獲取即可。索引是表的目錄,在查詢內容之前可以先在目錄中查詢索引位置,以此快速定位查詢資料。需要說明的是,mysql支援諸多儲存引擎,而各種儲存引擎對...