Mysql中key和index的區別點整理

2022-09-21 14:42:07 字數 1562 閱讀 2022

我們先來看下**:

alter table reportblockdetail add key taskcode (taskcode)

alter table reportblockdetail drop key taskcode

嗯這確實是比較容易混淆的地方。

在我們使用mysql中可能壓根不會注意這個問題,因為大多數情況下他們展示出來的效果都差不多,但是還是不能將他們劃等號(至少理論上是這樣)

索引(index)和約束(key)的區別主要在於二者的出發點不同,索引(index)負責維護表的查詢和操作速度,約束(key)負責維護表的完整性。

而有這個困惑的話,很可能是由於mysql中有乙個奇怪現象:

很奇怪吧,兩者不同的東西但是建立的時候又會附帶給對方,為什麼這樣做呢?因為原因是:

mysql中的約束效果是通過索引來實現的,mysql資料庫判斷是否當前列是否unique就是通過unique索引判斷的。

最後總結下:

在理論上是不能將mysql的key和index劃等號的,他們不是一回事,但在實際使用中,他們基本沒有區別。

內容擴充套件:

key與primary key區別

create table wh_logrecord (

logrecord_id int(11) not null auto_increment,

user_name varchar(100) defaul程式設計客棧t null,

operation_time datetime default null,

logrecord_operation varchar(100) default null,

primary key (logrecord_id),

key wh_logrecord_user_name (user_name)

)key與index區別

批註:這部分我仍雲裡霧裡。

key通常是index同義詞。如果關鍵字屬性primary key在列定義中已給定,則pri程式設計客棧mary key也可以只指定為key。這麼做的目的是與其它資料庫系統相容。 primary key是乙個唯一key,此時,所有的關鍵字列必須定義為not null。如果這些列沒有被明確地定義為not null,mysql應隱含地定義這些列。乙個表只有乙個primary key。

mysql 中index 與key 的區別

key即鍵值,是關係模型理論中的一部份,比如有主鍵(primary key),外來鍵(foreign key)等,用於資料完整性檢否與唯一性約束等。而index則處於實現層面,比如可以對錶個的任意列建立索引,那麼當建立索引的列處於sql語句中的where條件中時,就可以得到快速的資料定位,從而快速檢索。至於unique index,則只是屬於index中的一種而已,建立了unique index表示此列資料不可重複,猜想mysql對unique index型別的索引可以做進一步特殊優化吧。

於是乎,在設計表的時候,key只是要處於模型層面的,而當需要進行查詢優化,則對相關列建立索引即可。

另外,在mysql中,對於乙個primary key的列,mysql已經自動對其建立了unique index,無需重複再在上面建立索引了。

MySQL中Key與Index的區別和聯絡

在mysql學習中遇到了key和index兩個關鍵字,對錶結構中索引的不理解,查詢資料進行歸納總結。key 是資料庫的物理結構,它包含兩層意義,一是約束 偏重於約束和規範資料庫的結構完整性 二是索引 輔助查詢用的 包括primary key,unique key,foreign key 等。mysq...

MySQL中Index與Key的區別

2010 03 12 admin 看似有差不多的作用,加了key的表與建立了index的表,都可以進行快速的資料查詢。他們之間的區別在於處於不同的層面上。key即鍵值,是關係模型理論中的一部份,比如有主鍵 primary key 外來鍵 foreign key 等,用於資料完整性檢否與唯一性約束等。...

MySQL裡的Key和Index有什麼不同

key 是資料庫的物理結構,它包含兩層意義,一是約束 偏重於約束和規範資料庫的結構完整性 二是索引 輔助查詢用的 包括primary key,unique key,foreign key 等。mysql中的key是同時具有constraint和index的意義。index是資料庫的物理結構,它只是輔...