2012-07-31 174 views
0

我有一個mysql數據庫。當我在表中輸入數據[T_ID,T_Name,T_AGE](比如10k行左右)時,數據庫是否會爲該表隱式創建索引。如果是這樣,那麼如果我使用「創建索引..創建索引我自己會說什麼T_ID」會發生什麼。這兩個索引是否存在,或者哪一個會實際存在。創建數據庫索引Vs用戶爲表創建索引

回答

1

如果您指定primary key(t_id)那麼它會自動創建一個索引,並且您將無法在同一列上創建另一個索引。

爲什麼你不試試這些情況?

+1

是的,我收到消息說「這樣的列表已經編入索引」(Oracle)。現在我得到了結果。如果表具有主鍵,則不需要定義列並給出索引。 – Amarnath 2012-07-31 06:46:55

+0

是的,你得到它:) – 2012-07-31 07:24:11

+0

我讀到,如果索引是排序數據庫搜索使用二進制搜索。但是,如果我聲明主鍵和主鍵列沒有排序,那麼如何發生seach ..請清除我這一個太.. :) – Amarnath 2012-07-31 07:57:15

0

它依賴於MySQL中的存儲引擎。

InnoDB存儲引擎的情況下,如果你不指定任何PRIMARY KEYID列,然後在內部會自動創建一個clustered index。見here

如果是MyISAM存儲引擎,您可以在ID字段中明確指定PRIMARY KEY

在這兩種情況下,二級索引都是可選的。

+0

確實。這裏的關鍵點是這兩個數據庫之間的默認主鍵索引行爲存在差異。在一天結束時,您應該在創建之後檢查表格元數據,看看索引是否符合您的期望。 (例如,通過squirrelSQL中的索引選項卡) – Codek 2012-07-31 07:23:19