MySQL搜索速度很慢,查询或索引不好?

时间:2014-06-25 15:52:10

标签: php mysql sql performance

我们在应用程序中有一个表,这个表非常庞大。容易上百万行。

结构基本如下:

SERIES_ID | YEAR | DAY_SINCE_EPOCH | HOUR | MINUTE | VALUE

我们在YEAR和DAY_SINCE_EPOCH上有索引。

问题是某些类型的查询非常慢,例如:

SELECT
 ...
WHERE
   SERIES_ID = 3 AND
   DAY_SINCE_EPOCH < 16000 AND
   YEAR = 2012
ORDER BY 
   DAY_SINCE_EPOCH DESC,
   HOUR DESC,
   MINUTE DESC
LIMIT 1

在一个包含2M行的表中大约需要10秒,在一个包含18M行的表中大约需要20秒。

目的是在第16000天之前找到系列3的最后一条记录.YEAR = 2012是为了加快查找速度。

所以我想知道,我们是否设置了正确的索引?没有年度指数,也许会更快?或者添加SERIES_ID索引或类似的东西?

或者只是重组查询会有帮助吗?

欢迎任何想法如何加快搜索速度!

2 个答案:

答案 0 :(得分:3)

此索引可能有所帮助:

> create index on your_table(series_id, day_since_epoch, year);

答案 1 :(得分:0)

检查这些条件

SERIES_ID = 3 AND
DAY_SINCE_EPOCH < 16000 AND
YEAR = 2012

当您更新表格时(例如保存新记录)然后将真/假信息保存在“位”列中,然后检查它就像

where checked=1 .....

 SERIES_ID | YEAR | DAY_SINCE_EPOCH | HOUR | MINUTE | VALUE | checked