MySQL——索引基礎

來源:互聯網
上載者:User

標籤:lte   空間   建立   color   磁碟空間   images   複合式索引   .com   感悟   

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

本篇文章中用於測試索引建立的user表的結構如下:

什麼是索引

索引(在 MySQL 中也叫“鍵key”)是儲存引擎快速找到記錄的一種資料結構

——《高效能MySQL》

我們需要知道索引其實是一種資料結構,其功能是協助我們快速匹配尋找到需要的資料行,是資料庫效能最佳化最常用的工具之一。其作用相當於超市裡的導購員、書本裡的目錄。

索引類型

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

  1. 主鍵索引 PRIMARY KEY

    它是一種特殊的唯一索引,不允許有空值。一般是在建表的時候同時建立主鍵索引。

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

  2. 唯一索引 UNIQUE

    唯一索引列的值必須唯一,但允許有空值。如果是複合式索引,則列值的組合必須唯一。

    可以通過ALTER TABLE table_name ADD UNIQUE (column);建立唯一索引

    可以通過ALTER TABLE table_name ADD UNIQUE (column1,column2);建立唯一複合式索引

  3. 普通索引 INDEX

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

    可以通過ALTER TABLE table_name ADD INDEX index_name (column);建立普通索引

  4. 複合式索引 INDEX

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

    可以通過ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3);建立複合式索引

  5. 全文索引 FULLTEXT

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

    可以通過ALTER TABLE table_name ADD FULLTEXT (column);建立全文索引

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

索引設計的原則
  1. 適合索引的列是出現在where子句中的列,或者串連子句中指定的列

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

  3. 使用短索引,如果對長字串列進行索引,應該指定一個前置長度,這樣能夠節省大量索引空間

  4. 不要過度索引。索引需要額外的磁碟空間,並降低寫操作的效能。在修改表內容的時候,索引會進行更新甚至重構,索引列越多,這個時間就會越長。所以只保持需要的索引有利於查詢即可。

參考
  • 《深入淺出MySQL》



擼碼那些事
公眾號:

來源:http://songwenjie.cnblogs.com/
聲明:本文為博主學習感悟總結,水平有限,如果不當,歡迎指正。如果您認為還不錯,不妨點擊一下下方的【推薦】按鈕,謝謝支援。轉載與引用請註明出處。


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.