如何利用大数据在MySQL上进行计算来优化更新查询

时间:2017-02-09 09:56:22

标签: mysql

我想更新mysql表的数据,这个表有2.258.164行 有查询

select ch_0  
from bmkg.tb_datastore_2017 
WHERE id_station='150001' 
AND date_time<'2017-02-06 17:30:00' 
and DATE_FORMAT(`date_time`,'%Y-%m-%d') = '2017-02-06' 
order by date_time Desc limit 1

这个查询需要55-60秒,它要慢慢来,请帮我优化一下.. 谢谢, 最热烈的问候,

3 个答案:

答案 0 :(得分:0)

您可以使用 BETWEEN 来阻止FULL TABLE SCAN

SELECT  ch_0  
FROM bmkg.tb_datastore_2017 
WHERE id_station='150001' 
AND `date_time` BETWEEN '2017-02-06 00:00:00' AND  '2017-02-06 17:30:00'
ORDER BY date_time DESC
LIMIT 1;

请发布我的查询的 EXPLAIN 以查看是否有任何INDEX

答案 1 :(得分:0)

SELECT  ch_0  
FROM bmkg.tb_datastore_2017 
WHERE id_station='150001' 
AND `date_time` BETWEEN '2017-02-06 00:00:00' AND  '2017-02-06 17:30:00'
ORDER BY date_time DESC
LIMIT 1;

请试试这个。让我知道用同样的数据执行需要多长时间。 希望这会对你有所帮助。

答案 2 :(得分:-1)

您也可以这样使用: -

select ch_0  
from bmkg.tb_datastore_2017
WHERE id_station='150001'
AND date_time<'2017-02-06 17:30:00' and DATE(`date_time`) = '2017-02-06'
order by date_time Desc limit 1;

我也遇到了这样的问题并使用了问题解决的Date()函数,否则你可以分享你的查询的EXPLAIN计划,以便我们可以分析更多。

谢谢,