MySQL 执行时间太长

MySQL taking too much time to execute

我的查询很简单但包含大量数据:

SELECT * 
FROM trackhistory 
WHERE key=14846 and 
    date between "2016-11-15 00:00:00" and "2016-12-16 13:47:02"

我在这个 table 中有超过 1000 万行。

我的 table 结构是:

请帮我优化一下。执行需要两分多钟。

我对查询使用了解释,但没有得到任何线索。

首先,将索引添加到 Key,然后看看会发生什么。语法是这样的:

ALTER TABLE `trackhistory` ADD INDEX (`product_id`)

然后您可以将密钥添加到 Date,但这会增加一些额外的插入工作,并且会占用一些磁盘空间。这将取决于您的用例,并且不可能说这是否是明智之举。

最好的办法是试用您的用例。

(为了我的理智,如果你的数据库中有 camel-case,为什么不在你的查询中显示这些很好。这看起来很恶心,有一个 Date字段并在您的查询中包含 date。我知道它有效,但是.... )

复合 INDEX(key, date) 比单独的索引更好。

my index cookbook