[英]Issue with MySQL Compound Primary Key
我在使用復合主鍵的表上遇到問題。 密鑰包含一個日期,后跟一個bigint。
即使僅從PK中選擇字段並使用同時包含兩列的where子句,表上的select看起來仍在掃描。 例如
SELECT mydate, myid from foo WHERE mydate >='2014-08-26' AND my_id = 1234;
使用其中的位置和所考慮的行數(以百萬為單位)來解釋選擇顯示。
一個奇怪的是key_len,顯示為7,看起來太小了。
我的直覺說鑰匙已經壞了,但我可能會遺漏一些明顯的東西。
有什么想法嗎?
謝謝
理查德
對於此查詢,所需的索引位於id, date
:
create index idx_foo_myid_mydate on foo(my_id, mydate);
這是因為where
子句中的條件具有相等和不相等。 在應用不等式之前,等式條件需要從左至右匹配索引。
MySQL 文檔實際上在解釋復合索引方面做得很好(我認為)。
您現有的索引將用於mydate
上的不等式。 但是,隨后將掃描所有相關日期之后的所有索引,以滿足my_id
上的條件。 有了正確的索引,MySQL可以直接轉到正確的行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.