看似有差很少的做用,加了Key的表與創建了Index的表,均可以進行快速的數據查詢。
他們之間的區別在於處於不一樣的層面上。優化
Key即鍵值,是關係模型理論中的一部份,好比有主鍵(Primary Key),外鍵(Foreign Key)等,用於數據完整性檢查與惟一性約束等。spa
而Index則處於實現層面,好比能夠對錶個的任意列創建索引,那麼當創建索引的列處於SQL語句中的Where條件中時,就能夠獲得快速的數據定 位,從而快速檢索。至於Unique Index,則只是屬於Index中的一種而已,創建了Unique Index表示此列數據不可重複,猜測MySQL對Unique Index類型的索引能夠作進一步特殊優化吧。設計
因而乎,在設計表的時候,Key只是要處於模型層面的,而當須要進行查詢優化,則對相關列創建索引便可。索引
另外,在MySQL中,對於一個Primary Key的列,MySQL已經自動對其創建了Unique Index,無需重複再在上面創建索引了。it
搜索到的一段解釋:io
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).table