2009-09-09 47 views
128

我知道如何在下面的代碼中使用INDEX。而且我知道如何使用外鍵和主鍵。指數訴各有什麼不同?鍵入MySQL

CREATE TABLE tasks ( 
task_id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
parent_id INT UNSIGNED NOT NULL DEFAULT 0, 
task VARCHAR(100) NOT NULL, 
date_added TIMESTAMP NOT NULL, 
date_completed TIMESTAMP, 
PRIMARY KEY (task_id), 
INDEX parent (parent_id), 
.... 

但是我發現使用密鑰而不是INDEX如下代碼。

... 
KEY order_date (order_date) 
... 

我無法在MySQL官方頁面找到任何文檔。

有誰能告訴我KEY和INDEX之間有什麼不同嗎? 我可以看到不同的是,當我使用KEY ...時,我需要重複這個詞,例如KEY order_date(order_date)。

回答

182

沒有區別。它們是同義詞。

the CREATE TABLE manual entry來自:

KEY通常爲INDEX的同義詞。當在列定義中給出時,關鍵屬性PRIMARY KEY可以 也被指定爲只有KEY。這是爲了與其他數據庫系統兼容而實現的 。

+1

當在SQLyog的最新版本表信息看它顯示'鍵的鍵名(列)'當我創建的表'INDEX鍵名(列)'。它是一個同義詞的事實完美地解釋了它。 – crmpicco 2014-04-02 10:10:23

3

鍵是在表內扮演特定角色的特殊字段,鍵的類型決定了它在表內的用途。

索引是RDBMS(數據庫管理系統)提供的用於改進數據處理的結構。索引與邏輯數據庫結構無關。

SO ...

鍵是使用在表中標識記錄的邏輯結構和索引使用,以優化數據處理的物理結構。

來源:邁克爾·埃爾南德斯

+0

問題是關於在MySQL中使用SQL標識符KEY和INDEX。不是鍵和索引之間的區別。 – 2017-02-02 21:43:18

0

一個關鍵字是我們構建索引的一組列或表達式。

  1. 儘管索引是存儲在數據庫中的結構,但鍵是嚴格的邏輯概念。

  2. 索引幫助我們快速訪問記錄,而鍵只是唯一標識記錄。

  3. 每張表都必須有一個鍵,但索引不是強制性的。

檢查https://docs.oracle.com/cd/E11882_01/server.112/e40540/indexiot.htm#CNCPT721

+0

問題是關於在MySQL中使用SQL標識符KEY和INDEX。不是鍵和索引之間的區別。 – 2017-02-02 21:42:37