mysql中索引是非常重要的知識點,相比其他的知識點,索引更難掌握,并且mysql中的索引種類也有很多,比如primary key 、unique key 與index等等,本文章向大家介紹mysql中key 、primary key 、unique key 與index區別。
一、key與primary key區別
| 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 wh_logrecord_user_name (user_name) 
本表的user_name字段與wh_logrecord_user_name表user_name字段建立外鍵 
括號外是建立外鍵的對應表,括號內是對應字段 
類似還有 KEY user(userid) 
當然,key未必都是外鍵
總結: 
Key是索引約束,對表中字段進行約束索引的,都是通過primary foreign unique等創建的。常見有foreign key,外鍵關聯用的。
KEY forum (status,type,displayorder)  # 是多列索引(鍵) 
KEY tid (tid)                         # 是單列索引(鍵)。 
如建表時: KEY forum (status,type,displayorder) 
select * from table group by status,type,displayorder 是否就自動用上了此索引, 
而當 select * from table group by status 此索引有用嗎?
key的用途:主要是用來加快查詢速度的。
二、KEY與INDEX區別
批注:這部分我仍云里霧里。 
KEY通常是INDEX同義詞。如果關鍵字屬性PRIMARY KEY在列定義中已給定,則PRIMARY 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,無需重復再在上面建立索引了。
新聞熱點
疑難解答