Mysql中Key與Index的區別

來源:互聯網
上載者:User

標籤:

mysql的key和index多少有點令人迷惑,這實際上考察對資料庫體繫結構的瞭解的。1 key 是資料庫的物理結構,它包含兩層意義,一是約束(偏重於約束和規範資料庫的結構完整性),二是索引(輔助查詢用的)。包括primary key, unique key, foreign key 等。  primary key 有兩個作用,一是約束作用(constraint),用來規範一個儲存主鍵和唯一性,但同時也在此key上建立了一個index; unique key 也有兩個作用,一是約束作用(constraint),規範資料的唯一性,但同時也在這個key上建立了一個index;  foreign key也有兩個作用,一是約束作用(constraint),規範資料的參考完整性,但同時也在這個key上建立了一個index;  可見,mysql的key是同時具有constraint和index的意義,這點和其他資料庫表現的可能有區別。(至少在oracle上建立外鍵,不會自動建立index),因此建立key也有如下幾種方式:  (1)在欄位級以key方式建立, 如 create table t (id int not null primary key);  (2)在表級以constraint方式建立,如create table t(id int, CONSTRAINT pk_t_id PRIMARY key (id));  (3)在表級以key方式建立,如create table t(id int, primary key (id));  其它key建立類似,但不管那種方式,既建立了constraint,又建立了index,只不過index使用的就是這個constraint或key。2 index是資料庫的物理結構,它只是輔助查詢的,它建立時會在另外的資料表空間(mysql中的innodb資料表空間)以一個類似目錄的結構儲存。索引要分類的話,分為首碼索引、全文本索引等;  因此,索引只是索引,它不會去約束索引的欄位的行為(那是key要做的事情)。  如,create table t(id int, index inx_tx_id  (id));3 最後的釋疑:  (1)我們說索引分類,分為主鍵索引、唯一索引、普通索引(這才是純粹的index)等,也是基於是不是把index看作了key。  比如 create table t(id int, unique index inx_tx_id  (id));  --index當作了key使用  (2)最重要的也就是,不管如何描述,理解index是純粹的index,還是被當作key,當作key時則會有兩種意義或起兩種作用。

http://blog.csdn.net/javaACMer/article/details/10517721

Mysql中Key與Index的區別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.