碼上快樂
1秒登錄
首頁
榜單
標簽
關於
搜索
相關內容
簡體
繁體
數據庫操作之——key與index的區別
本文轉載自
查看原文
2017-10-31 18:35
3238
mysql
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時則會有兩種意義或起兩種作用。
×
免責聲明!
本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。
猜您在找
Redis數據庫之KEY的操作與事務管理
mysql key index區別
unique key index區別
數據庫操作提示:Specified key was too long; max key length is 767 bytes
[轉]操作MySQL數據庫報出:Parameter index out of range (1 > number of parameters, which is
Mysql中的key和index的區別
【Mysql優化】key和index區別
一、操作型數據庫和分析型數據庫的區別
關系型數據庫和非關系型數據庫的種類和區別和關系型數據庫基本操作
達夢數據庫更換key
粵ICP備18138465號
© 2018-2025 CODEPRJ.COM