MySQL 常用易混淆知識點總結

hallo_monde發表於2018-06-05
  • Innodb 與 Myisam 引擎的區別與應用場景
    • 兩者區別
      • Innodb 支援事務,Myisam 不支援
      • Innodb 是行鎖,Myisam 是表鎖
      • Innodb 是聚簇索引,Myisam 是非聚簇索引
      • Innodb 可以使用外來鍵索引,Myisam 不行
      • Myisam 可以使用全文索引,Mysql 5.6 以後 InnoDB 才能使用
      • Myisam 用一個變數儲存了整個表的行數,Innodb 沒有,當 select count(*) from table 時 Myisam 會佷快速因為只需要讀一個變數,而 Innodb 需要全表掃描
    • 應用場景
      • 如果需要使用事務請使用 Innodb
      • 讀操作比較多建議使用 Myisam ,大併發寫比較多建議使用 Innodb

  • 什麼是聚簇索引,什麼是非聚簇索引

    • 聚簇索引

      • 一種索引,該索引中鍵值的邏輯順序決定了表中相應行的物理順序
      • 聚簇索引的葉節點就是資料節點
        file
    • 非聚簇索引
      • 一種索引,該索引中索引的邏輯順序與磁碟上行的物理儲存順序不同
      • 非聚簇索引的葉節點仍然是索引節點,只不過有一個指標指向對應的資料塊
        file

  • 組合索引和多個單列索引的區別
    • 組合索引是一種索引,且遵循最右原則;單列索引每一個都是索引,但查詢中使用多個單列索引,系統也只會使用約束性最高的索引
    • 因為 Mysql 一次查詢只能使用1個索引,所以要合理的使用組合索引,而不是單列索引
    • 因此 explain 來查詢 sql 語句效能時,key 欄位無論如何都只會存在一個被使用的索引

相關文章