2017-02-09 3 views
0

i Update-Abfrage mit der Berechnung auf MySQL optimieren möchten Daten auf MySQL-Tabelle aktualisieren, haben diese Tabelle 2.258.164 Reihe gibt die AbfrageWie mit großen Daten

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 

diese Abfrage 55-60 Sekunden benötigen wird seine, langsam, bitte helfen Sie mir, dies zu optimieren .. Danke, Herzlichst,

+0

die Feldtyp ** date_time ** und zeigen uns die ** SHOW TABLE tb_datastore_2017 CREATE ** –

+1

ein Problem ist die Verwendung von ** DATE_FORMAT ('date_time',% 'Y-% m-% d ') =' 2017-02-06 '** also muss MySQL jede Zeile in das Format umwandeln, das du gibst. Dies wird ein FULL TABLE SCAN sein und kann keinen Index verwenden. Wenn das date_time Feld vom Typ ** DATETIME **, also können Sie meine Antwort verwenden –

Antwort

0

Sie ZWISCHEN können ein 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; 
zu verhindern

bitte posten auch die meiner Abfrage ERKLÄREN, um zu sehen, ob es irgendwelche INDEX sind

+0

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

+0

Dieser ist besser geeignet. –

+0

@Sagar Gangwal - OK - ich habe es nicht gesehen - ich habe in meiner Antwort geändert –

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; 

Bitte versuchen Sie es mich this.And wissen zu lassen, wie viel Zeit es mit gleichen Daten nahm auszuführen. Hoffe, das wird dir helfen.

-1

Sie können auch wie folgt verwenden: -

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; 

Ich war zu sehr mit solchen Problem stecken und mit Datum (Funktion von Problem gelöst) oder sonst können Sie teilen Plan für Ihre Abfrage erklären, damit wir analysieren Mehr.

Danke,

+0

Sie verwenden DATE-Funktion in wo, so ist es eine vollständige Tabelle scannen –

Verwandte Themen