Auf eine etwas andere Note, eine Abfrage wie diese Datensätze abzurufen basierend auf Datum schlecht ist.
SELECT *
FROM deals
WHERE DATE_FORMAT(expiration_date,'%Y-%m-%d %H:%i:%s') >= NOW()
AND cat1 LIKE '%$geef%'
ORDER BY deal_id ASC
Welches Format hat Ihr Ablaufdatum? Da Sie es an DATE_FORMAT übergeben, würde ich annehmen, dass es sich um einen DATE- oder DATETIME-Typ handelt. Wenn Sie Ihre expiration_date
in DATE_FORMAT einschließen, bedeutet dies, dass der Optimierer keinen Index für dieses Feld verwenden kann, wodurch ein vollständiger Tabellenscan erzwungen wird. Das sind schlechte Nachrichten!
Sie das gleiche Ergebnis mit dem DATE_FORMAT entfernt bekommen -
SELECT *
FROM deals
WHERE expiration_date >= NOW()
AND cat1 LIKE '%$geef%'
ORDER BY deal_id ASC
und jetzt wird der Optimierer der Lage sein, einen Index zu verwenden, die expiration_date als das erste Feld im Index enthält.
Die Tatsache, dass Sie ein Feld namens cat1
haben, führt mich zu der Annahme, dass Sie andere Kategorie Felder haben können. Auch dies sind schlechte Nachrichten. Wiederholte Gruppen in Spalten sind nicht dein Freund. Sie machen alle möglichen Dinge schwieriger als sie sein müssen und sie sind ineffizient. Lesen Sie diesen Artikel auf First Normal Form.
Was ist der Wert von '$ cat' in Query? – safarov
Mit $ cat kann ich die Kategorien definieren. Es ist nicht wichtig für die Frage, die ich denke. \t '$ geef = $ _GET ['kategorie']; \t $ cat = "UND cat1 like '% $ geef%'"; ' – Nathaniel
Wie ist Ihre Tabellenstruktur? Es wäre eine gute Idee, eine Stichprobe von Daten in die Tabelle aufzunehmen und zu sehen, wie das Ergebnis aussehen soll. – nnichols