我的查询很简单,但包含大量数据:
SELECT *
FROM trackhistory
WHERE key=14846 and
date between "2016-11-15 00:00:00" and "2016-12-16 13:47:02"
此表中有超过1000万行。
我的表结构是:
请帮我优化一下。执行时间超过两分钟。
答案 0 :(得分:1)
复合INDEX(key, date)
将优于单独的索引。
答案 1 :(得分:0)
首先,向Key
添加索引,看看会发生什么。语法如下:
ALTER TABLE `trackhistory` ADD INDEX (`product_id`)
然后你可以为Date
添加一个密钥,但这会增加一些额外的插入工作量,并且需要一些磁盘空间。这将取决于您的使用情况,并且不可能说这是否是一件明智的事情。
最好的办法是试用你的用例。
(为了我的理智,如果你的数据库中有驼峰式,为什么不在你的查询中显示那些。这只是看起来很蠢,有一个Date
字段并且{{1在你的查询中。我知道它有效,但....)