Zum Inhalt springen

MySQL Query optimieren


CSharp92

Empfohlene Beiträge

Guten Tag,

habe ein Script gebastelt, läuft täglich via Cronjob.

SELECT DISTINCT id, email

FROM contact

WHERE date BETWEEN (NOW() - INTERVAL 60 DAY) AND NOW()

Ruft alle Daten der letzten 70 Tagen auf: num zum Problem:

Danach wird überprüft ob Datensatz X länger als Y Tage schon besteht, wenn ja, dann wird eine E-Mail versendet. (Die Tage richten sich nach der ID, kann also unterschiedlich sein. Eine ID hat 5 Tage, kann aber auch 10 Tage haben.) Im Query löse ich das global mit der "höchsten"-Zahl die eine ID hat. Danach überprüfe ich, per PHP, ob das Datum abgelaufen ist bzw die Tage nach dem Datum vergangen sind. Leider ist das wohl nicht die beste Methode. Kennt einer eine bessere?

Zusammenfassung:

> Alle Daten der letzten 70 Tage

> Datensatz wird überprüft, ob Datensatz X Tage vorbei ist

> Wenn ja, wird Email versendet

> Wenn nein, wird nichts getan

btw: Azubi 1. Jahr. Bitte nicht hauen für Missbrauch von MYSQL / PHP :P

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich bin in Mysql jetzt nicht unbedingt top fit, aber so wie ich die Sache lese, muss in dem Query das Datum des Datensatzes 2x verglichen werden. Einmal gegen now() -60 Tage und einmal gegen now().

date_add sollte das ganze mit etwas weniger rechnen hinbekommen.

Das nächste was performance kostet wäre das distinct. Wie sehen die Daten denn aus ? Warum vergleichst du in PHP das Datum mit, ich vermute der aktuellen Zeit ?

Hast du je ID meherere Einträge und intressierst dich für den jüngsten / ältesten ?

Gruß

Sven

Link zu diesem Kommentar
Auf anderen Seiten teilen

Steht in deiner Tabelle auch die Anzahl an Tagen pro ID die es dauert, bis diese ID als abgelaufen gilt und damit eine E-Mail versendet werden muss?

Wenn ja, könnte man das auch nicht mit in die SQL Abfrage einbauen, sodass du in deinem Programm nur noch die E-Mails verschicken musst, und nicht mehr nochmal jeden Datensatz auf den Sachverhalt überprüfst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...