mysql中key與index差異

CREATE TABLE wh_logrecord (
logrecord_id int(11) NOT NULL auto_increment,
user_name varchar(100) default NULL,
operation_time datetime default NULL,
logrecord_operation varchar(100) default NULL,
PRIMARY KEY (logrecord_id),
KEY wh_logrecord_user_name (user_name)
)
加key的幾個就是組合主鍵,主鍵必須唯一性,不能有重複的

搜索到的一段解釋:

    Note that “primary” is called PRIMARY KEY not INDEX.
    KEY is something on the logical level, describes your table and database design (i.e. enforces referential integrity …)
    INDEX is something on the physical level, helps improve access time for table operations.
    Behind every PK there is (usually) unique index created (automatically).


Key即鍵值,是關係模型理論中的一部份,比如有主鍵(Primary Key),外鍵(Foreign Key)等,用於數據完整性檢否與唯一性約束等。

而Index則處於實現層面,比如可以對錶個的任意列建立索引,那麼當建立索引的列處於SQL語句中的Where條件中時,就可以得到快速的數據定位,從而快速檢索。至於Unique Index,則只是屬於Index中的一種而已,建立了Unique Index表示此列數據不可重複,猜想MySQL對Unique Index類型的索引可以做進一步特殊優化吧。

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

另外,在MySQL中,對於一個Primary Key的列,MySQL已經自動對其建立了Unique Index,無需重複再在上面建立索引了。


KEY通常是INDEX同義詞。如果關鍵字屬性PRIMARY KEY在列定義中已給定,則PRIMARY KEY也可以只指定爲KEY。這麼做的目的是與其它數據庫系統兼容。 PRIMARY KEY是一個唯一KEY,此時,所有的關鍵字列必須定義爲NOT NULL。如果這些列沒有被明確地定義爲NOT NULL,MySQL應隱含地定義這些列。一個表只有一個PRIMARY KEY。



mysql中UNIQUE KEY和PRIMARY KEY有什麼區別
前者表示數據唯一,可爲空值,後者也唯一,但不能爲空值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章