簡體   English   中英

除了MySQL表中的主鍵之外,我是否還需要單獨的索引?

[英]Do i need separate index in addition to primary key in a MySQL table?

我的表架構是

創建表項(時間,名稱,令牌)PRIMARY_KEY(時間,名稱)。

其中“時間”是創建項目的時間戳。 當我做以下查詢

選擇名稱,來自ITEMS的令牌,其中名稱= shoes

由於我的表有超過一百萬行,因此需要花費一些時間來加載數據。

我是否需要添加INDEX以更快地檢索數據? 我已經有此表的INDEX ,因為有一個PRIMARY KEY

您需要一個單獨的索引作為name 主鍵索引可以處理名稱,但只能與time結合使用。

如果將其定義為:

 PRIMARY_KEY(Name, Time)

然后,您的查詢可以利用索引。

MySQL有復合指標相當不錯的文檔在這里

當您使用PRIMARY_KEY(Time, NAME)創建索引PRIMARY_KEY(Time, NAME) ,這些值將串聯在一起。 MySQL無法使用此索引來按NAME搜索。

順便說一句,如果您在查詢之前使用EXPLAN關鍵字,您可能會從查詢優化器中獲得很多有用的提示:

EXPLAIN SELECT Name, Token from ITEMS where name = shoes

請注意標記為“ where”的輸出。 這表明在所有索引用完后,MySQL需要手動獲取和檢查多少記錄。 無需等待或盲目測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM