Nein, hatte keinerlei Indizes angelegt.
Hab nun einen Unique Index über `timestamp`in jeder Tabelle gelegt.
Auch die Abfrage hab ich nochmals verändert so das ich aktuell auf ca 40 Sekunden (Zeitfraum 01.05.2018 bis 14.05.2018) für die Abfrage komme.
Hab den Zeitraum mal geändert, da ich ja ggf. die Daten eines Jahres auswerten möchte also (01.01.2018 - 14.05.2018)... läuft sich das Script wohl tot, nach 15 Min. noch kein Ergebnis.
PHP-Code:
// Datum der Form dd.mm.yyyy umwandeln in YYYY-mm-dd
if($von !== NULL && $bis !== NULL){
$vondatum_split = explode(".",$von);
$vondatum = $vondatum_split[2]."-".$vondatum_split[1]."-".$vondatum_split[0];
$bisdatum_split = explode(".",$bis);
$bisdatum = $bisdatum_split[2]."-".$bisdatum_split[1]."-".$bisdatum_split[0];
$zeitraum = " BETWEEN '".$vondatum."' AND '".$bisdatum."'";
} elseif ($jahr !== NULL){
$zeitraum = " YEAR(heizung_webdaten.timestamp) = ".$jahr."";
}
$sql_query = "SELECT hzw.*, sthz.timestamp AS timestamp_strom, sthz.WirkenergieSigmaL_imp, sths.WirkleistungSigmaL
FROM (SELECT *, CONVERT(DATE_FORMAT(timestamp,'%Y-%m-%d-%H:%i:00'), DATETIME) AS w_timestamp FROM heizung_webdaten WHERE timestamp ".$zeitraum.") hzw,
(SELECT * FROM strom_heizungsdaten WHERE timestamp ".$zeitraum.") sthz,
(SELECT * FROM strom_hausdaten WHERE timestamp ".$zeitraum.") sths
WHERE hzw.wp_status = 12
AND hzw.w_timestamp = CONVERT(DATE_FORMAT(sthz.timestamp,'%Y-%m-%d-%H:%i:00'),DATETIME)
AND hzw.w_timestamp = CONVERT(DATE_FORMAT(sths.timestamp,'%Y-%m-%d-%H:%i:00'),DATETIME)
ORDER BY hzw.w_timestamp";
echo $sql_query."<br>";
$result = $mysqli->query($sql_query);
echo $mysqli->error;
while($daten = $result->fetch_assoc()){
echo $daten['timestamp']." : ".$daten['wp_status']." => HZG-Strom_Daten: ".$daten['timestamp_strom']." -> ".$daten['WirkenergieSigmaL_imp']."kWh | akt. Verbrauch:".$daten['WirkleistungSigmaL']." kW<br>";
}