首頁>Club>
3
回覆列表
  • 1 # 美好34619

    索引本質是一棵B+Tree,聯合索引(col1, col2,col3)也是。其非葉子節點存儲的是第一個關鍵字的索引,而葉節點存儲的則是三個關鍵字col1、col2、col3三個關鍵字的數據,且按照col1、col2、col3的順序進行排序。

    聯合索引(年齡, 姓氏,名字),葉節點上data域存儲的是三個關鍵字的數據。且是按照年齡、姓氏、名字的順序排列的。

    而最左原則的原理就是,因為聯合索引的B+Tree是按照第一個關鍵字進行索引排列的。

  • 2 # 牽你的手陪我到老

    索引最左匹配原則

    建立聯合索引時會遵循最左匹配原則,即最左優先,在檢索數據時從聯合索引的最左邊開始匹配

    例如:

    為user表中的name、address、phone列添加聯合索引
    ALTER TABLE user ADD INDEX index_three(name,address,phone);

    所以,下面的三個SQL語句都可以命中索引

    SELECT * FROM user WHERE address = ‘北京’ AND phone = ‘12345’ AND name = ‘張三’;

    SELECT * FROM user WHERE name = ‘張三’ AND address = ‘北京’;

    SELECT * FROM user WHERE name = ‘張三’;

    這三條SQL語句在檢索時分別會使用以下索引進行數據匹配(name,address,phone) (name,address) (name)

    索引字段出現的順序可以是任意的,MySQL優化器會幫我們自動的調整where條件中的順序

    如果聯合索引中最左邊的列不在查詢條件中,則不會命中索引
    SELECT * FROM user WHERE address = ‘北京’ ;

  • 中秋節和大豐收的關聯?
  • 監控顯示屏無圖像?