MySQL——索引基礎

本篇文章,咱們將從索引基礎開始,介紹什麼是索引以及索引的幾種類型,而後學習如何建立索引以及索引設計的基本原則。數據庫

本篇文章中用於測試索引建立的user表的結構以下:性能優化

mark

什麼是索引

索引(在 MySQL 中也叫「鍵key」)是存儲引擎快速找到記錄的一種數據結構微信

——《高性能MySQL》數據結構

咱們須要知道索引實際上是一種數據結構,其功能是幫助咱們快速匹配查找到須要的數據行,是數據庫性能優化最經常使用的工具之一。其做用至關於超市裏的導購員、書本里的目錄。工具

索引類型

可使用SHOW INDEX FROM table_name;查看索引詳情post

mark

  1. 主鍵索引 PRIMARY KEY性能

    它是一種特殊的惟一索引,不容許有空值。通常是在建表的時候同時建立主鍵索引。學習

    注意:一個表只能有一個主鍵測試

    mark

  2. 惟一索引 UNIQUE優化

    惟一索引列的值必須惟一,但容許有空值。若是是組合索引,則列值的組合必須惟一。

    能夠經過ALTER TABLE table_name ADD UNIQUE (column);建立惟一索引

    mark

    mark

    能夠經過ALTER TABLE table_name ADD UNIQUE (column1,column2);建立惟一組合索引

    mark

    mark

  3. 普通索引 INDEX

    最基本的索引,它沒有任何限制。

    能夠經過ALTER TABLE table_name ADD INDEX index_name (column);建立普通索引

    mark

    mark

  4. 組合索引 INDEX

    組合索引,即一個索引包含多個列。多用於避免回表查詢。

    能夠經過ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3);建立組合索引

    mark

    mark

  5. 全文索引 FULLTEXT

    全文索引(也稱全文檢索)是目前搜索引擎使用的一種關鍵技術。

    能夠經過ALTER TABLE table_name ADD FULLTEXT (column);建立全文索引

    mark

    mark

索引一經建立不能修改,若是要修改索引,只能刪除重建。可使用DROP INDEX index_name ON table_name;刪除索引。

索引設計的原則

  1. 適合索引的列是出如今where子句中的列,或者鏈接子句中指定的列

  2. 基數較小的類,索引效果較差,沒有必要在此列創建索引

  3. 使用短索引,若是對長字符串列進行索引,應該指定一個前綴長度,這樣可以節省大量索引空間

  4. 不要過分索引。索引須要額外的磁盤空間,並下降寫操做的性能。在修改表內容的時候,索引會進行更新甚至重構,索引列越多,這個時間就會越長。因此只保持須要的索引有利於查詢便可。

參考

  • 《深刻淺出MySQL》



做者: 擼碼那些事

微信公衆號:

來源:http://songwenjie.cnblogs.com/
聲明:本文爲博主學習感悟總結,水平有限,若是不當,歡迎指正。若是您認爲還不錯,不妨點擊一下下方的 推薦按鈕,謝謝支持。轉載與引用請註明出處。
相關文章
相關標籤/搜索