我正在寻找一种方法来快速查询2.704 MySQL选择。 目前这个查询需要202.91903秒,这太慢了。
进行这么多查询的最佳方法是什么?
为什么我需要这个?
我有26张表,从2016年11月24日至今。每分钟都有一个新的条目。 (时间上午10:00至凌晨04:00 - 次日)。 现在我需要选择每天的最新条目,但最新的条目可能是04:00:00但也可以更早(例如03:00 pm)我不知道最后一个条目是什么时候。 所以我有以下选择:
SELECT `column1`, `column2`, `column3`
FROM `table`
WHERE `timestamp`>='2016-11-24 10:00:00' AND `timestamp`< '2016-11-25 04:01:00'
ORDER BY `id` DESC LIMIT 1
这是我每天和每张桌子的选择。
有没有人有解决方案来加快这个速度?
答案 0 :(得分:-3)
在表上为列时间戳创建索引。当您的表行增长很大时,将需要索引才能快速搜索您的记录。没有索引,就像你正在搜索第1行到你想要的行数百万行。
样品 在table_name(column_name)上创建索引index_name
答案 1 :(得分:-4)
如果我找对你的话...... 我想你可以把你改成这个
SELECT `column1`, `column2`, `column3`
FROM `table`
WHERE date_format(`timestamp`,'%d/%m/%Y')=date_format(curdate(),'%d/%m/%Y')
ORDER BY `timestamp` DESC LIMIT 1
我正在使用timestamp
和curdate()来仅选择今天的记录,按timestamp
降序排序,所以之前的行将排在最前面并将行限制为1,这样你就只有最早的。