![](/img/trans.png)
[英]Do I need to add an index on a mySQL table if the ID column is the primary key?
[英]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.