2017-06-05 4 views
1

ich zur Zeit diese Abfrage leite und es dauert etwa 15 Sekunden ich die AbfrageDatenbankabfrage braucht viel Zeit

SELECT *, `points`.`players` as `players` , 
FROM_UNIXTIME(`points`.`timestamp`, '%Y-%m-%d %H:%i') as `date`, 
     (SELECT `points`.`players` 
     FROM `points` 
     WHERE FROM_UNIXTIME(`points`.`timestamp`, '%Y-%m-%d %H:%i') > `date` - INTERVAL 7 DAY 
       AND FROM_UNIXTIME(`points`.`timestamp`, '%Y-%m-%d %H:%i') < `date` - INTERVAL 167 HOUR 
       AND `server_id` = {$server_id} 
       AND `type` = 2 
       LIMIT 1 
     ) as `prevplayers` 
FROM `points` 
WHERE `points`.`timestamp` > UNIX_TIMESTAMP(NOW() - INTERVAL 7 DAY) 
     AND `server_id` = {$server_id} 
     AND `type`=2 
GROUP BY DATE_FORMAT(FROM_UNIXTIME(`points`.`timestamp`), '%Y-%m-%d %H') 
ORDER BY DATE_FORMAT(FROM_UNIXTIME(`points`.`timestamp`),'%Y-%m-%d %H') 

Tabellenstruktur

enter image description here

Indizes optimieren möchten, laden enter image description here

Mit Erklärung Ausgang enter image description here

Ideale Zeit ist 1-2 Sek.

Irgendwelche Vorschläge?

Dank Somdeb

+1

wie verwenden Sie Indizes in der Tabelle? – varuog

+0

von id als primäre – Somdeb

+0

Bitte beschreiben Sie Ihre Tabellenstruktur und auch was ist Ihre Wunsch-Ausgabe, so hilft es anderen, Ihre Abfrage zu optimieren. –

Antwort

1

können Sie einen zusätzlichen Index mit den Spalten in folgenden Reihenfolge erstellen und die Abfrage wiederholen?

  1. server_id
  2. Typ
  3. Zeitstempel (Erwähnung absteigend)
+0

Durch Hinzufügen von Index Es viel schneller machen – Somdeb

Verwandte Themen