MySQL花了太多时间执行

时间:2017-02-07 09:57:20

标签: mysql optimization where-clause between

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

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

此表中有超过1000万行。

我的表结构是:

enter image description here

请帮我优化一下。执行时间超过两分钟。

我已经使用了解释查询,但没有得到任何线索。 enter image description here

2 个答案:

答案 0 :(得分:1)

复合INDEX(key, date)将优于单独的索引。

请参阅my index cookbook

答案 1 :(得分:0)

首先,向Key添加索引,看看会发生什么。语法如下:

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

然后你可以为Date添加一个密钥,但这会增加一些额外的插入工作量,并且需要一些磁盘空间。这将取决于您的使用情况,并且不可能说这是否是一件明智的事情。

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

(为了我的理智,如果你的数据库中有驼峰式,为什么不在你的查询中显示那些。这只是看起来很蠢,有一个Date字段并且{{1在你的查询中。我知道它有效,但....)