MySQL索引的設計和使用

來源:互聯網
上載者:User

標籤:空間   搜尋   先後   att   使用   開始   ash   字元   限制   

一、索引可以有效地提升SELECT操作的效能,同時會影響UPDATE、CREATE和DELETE操作的效能。每種引擎對於表的索引有數量和長度的限制。

二、索引的設計原則

  (A) 搜尋的索引列,不一定是要選擇的列,最適合索引的列是where子句的列或串連子句中的列。

  (B) 使用唯一索引,索引列的基礎越大,索引的效果越好。

  (C) 使用短索引,如果對字串列(char,varchar,text)索引,應該指定前置長度,使用首碼索引。

  (D) 利用最左首碼,建立一個n列的索引時,實際是建立了MySQL可利用的n個索引。可利用索引中的最左邊的列集來匹配行,這樣的列集被稱為最左首碼。

  (E) 不要過度索引,

  (F) 對於InnoDB儲存引擎的表,記錄預設先後會以 主鍵、唯一索引、內部列 依次存放,選擇好的主鍵很重要。同時,普通索引會儲存主鍵的索引值,主鍵要儘可能選擇短的資料類型。

三、BTREE索引和HASH索引

  (A) HASH索引的特點:

    只用於=和<=>操作符的等式比較。

    最佳化器不能使用HASH索引來加速ORDER BY 操作。

    MySQL不能確定兩個值之間大約有多少行。

    只能使用整個關鍵詞來搜尋一行。

  (B) BTREE索引的特點

    使用 >、<、>=、<=、BETWEEN、!=或者<>,或者LIKE ‘pattern‘(不以萬用字元開始)操作符時,都可以使用索引。

四、小結

  大多數MySQL索引使用BTREE中儲存,空間列類型的索引使用RTREE。

MySQL索引的設計和使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.