快速多选MySQL和PHP

时间:2017-03-08 08:31:39

标签: php mysql mysqli

我正在寻找一种方法来快速查询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

这是我每天和每张桌子的选择。

有没有人有解决方案来加快这个速度?

2 个答案:

答案 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,这样你就只有最早的。