MySQL的索引

來源:互聯網
上載者:User

標籤:範圍   type   避免   mysq   nod   range   sort   ffline   表示   

MySQL索引

  索引:是一種特殊的檔案(InnoDB 資料表上的索引是資料表空間的一個組成部分),它們包含著對資料表裡所有記錄的引用指標。其可以加快資料操作,但會使資料操作變慢;應該構建在被用作查詢條件的欄位上。

  MySQL中的索引類型:

    1.B+TREE索引

      Balance Tree(平衡樹),是一種資料結構,由於其綜合效率較高,顯著減少定位記錄時所經曆的中間過程,從而加快存取速度。

      可用來查詢的類型:

        (1)全值匹配

        (2)匹配最左首碼

        (3)匹配列首碼

        (4)匹配範圍值

      但也有一些限制:

        (1)必須從最左側開始查詢

        (2)不能跳過某一索引

        (3)如果查詢中某個列為範圍查詢,那麼其右側的列都無法再使用索引最佳化查詢;(精確範圍放左側,範圍查詢放右側即可;反之,右側將無法再使用索引查詢。)

    2.Hash索引     

      基於雜湊表,適合精確匹配索引中的所有列;但只有Memory儲存引擎支援顯式hash索引;不支援模糊比對,不適用於順序查詢;

    3.空間索引(R-TREE):

      在MySQL中僅MyISAM儲存引擎支援空間索引;

    4.全文索引(FULLTEXT):

      在文本中尋找關鍵詞,類似於搜尋引擎;

 

  MySQL中索引的管理: 

/*建立索引*/CREATE INDEX index_name ON tbl_name(col1,col2,...);/*刪除索引*/DROP [ONLINE|OFFLINE] INDEX index_name ON tbl_name;/*查看索引*/SHOW {INDEX|INDEXES|KEYS} {FORM|IN} tbl_name [{FROM|IN} db_name] [WHERE expression];

  如何分析索引有效性?

    EXPLAIN SELECT Clause...

  其輸出結果為:

  各項指標的解釋如下:

    id:當前查詢中SELECT語句的編號

    select_type:查詢類型

/*相關的類型*/SIMPLE  //簡單查詢SUBQUERY  //簡單子查詢DERIVED  //用於FROM的子查詢;UNION  //UNION語句中UNION後的第一個SELECT語句UNION RESULT  //UNION之後的總體臨時虛表

    table:查詢關聯到的表

    type:關聯類別型,即MySQL查詢表的方式

/*相關的類型*/ALL  //全表掃描index  //根據索引的次序進行全表掃描;如果在Extra中出現了“USING index”則表示使用了覆蓋索引,而非全表掃描range  //有限制的根據索引實現的範圍掃描ref  //根據索引返回表中匹配某單個值的所有行eq_ref  //僅返回一行,但需要額外與某個參考值作比較const,system  //直接返回單個行;此類型為最佳查詢;

    possible_keys:查詢中可能會用到的索引

    key:查詢中使用的索引

    key_len:使用索引的位元組數

    ref:在利用key所表示的索引完成查詢時所有的列或某常量值

    row:MySQL找到目標所讀取的行數

    Extra:額外資訊

/*額外資訊*/Using index  //MySQL將會使用覆蓋索引,以避免訪問表;Using where  //MySQL伺服器將在儲存引擎檢索後,再進行一次過濾;Using temporary  //MySQL對結果排序時會使用暫存資料表;Using filesort  //對結果使用一個外部索引排序(效能低下);

 

    

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.