2010-12-02 5 views
2

Welcher ist der schnellste Weg?PHP und MYSQL optimierte Möglichkeit nach Datum zu wählen

a) $query="SELECT id FROM example WHERE date_sent>='".$date1."' AND date_sent<='".$date2."'";

oder

b) $query="SELECT id FROM example WHERE date_sent BETWEEN '".$date1."' AND '".$date2."'";

Auch, was ist schneller und besser, wenn ich ein Datum im Format haben '02/12/2010' ?

a) in PHP das Datum in ein Format wie '2010-12-02' zu transformieren und vergleichen, direkt 'WHERE date_sent>=2010-12-02'

oder

b) die MySQL-Funktion: 'WHERE date>=str_to_date('02/12/2010','%d/%m/%Y')'?

Dank

Antwort

2

Es ist immer schneller, die Datumszeichenfolge in ein beliebiges natives Datumsformat zu konvertieren, das der SQL Server verwendet. Sie müssen keine Konvertierungsfunktion ausführen, noch muss der Server eine Konvertierung ausführen.

BETWEEN ist in der Regel schneller, weil es durch spezifischen Code auf dem Backend behandelt wird. Wobei der <=> = generalisierter Code ist und getestet werden muss. Stellen Sie außerdem sicher, dass Sie richtige Indizes haben.

Verwenden Sie auch PDO, $ query = "SELECT ID aus Beispiel WHERE Datum_Zwischen BETEEN? UND?";

+0

+1 für den PDO-Hinweis. Ich wollte das nur zu meiner Antwort hinzufügen. –

2

MySQL-Handbuch sagt:

Wenn ausdr größer oder gleich min und ausdr kleiner oder gleich max, BETWEEN gibt 1 zurück, andernfalls wird 0 zurückgegeben Dies ist äquivalent zum Ausdruck (min < = Ausdruck UND Ausdruck < = max), wenn alle Argumente vom selben Typ sind.


Auch, was schneller und besser ist, wenn ich ein Datum im Format haben '02/12/2010' ?

konvertieren, die Spalte zu einer DATETIME Art oder ähnlich, wenn es ein VARCHAR ist.

Verwandte Themen