簡體   English   中英

MySQL復合主鍵問題

[英]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.

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