MySQL-Indexvergleich: Ganzzahl vs. DateTime
Während in früheren Diskussionen die Feldtypen Timestamp und DateTime ohne Indizierung verglichen wurden, konzentriert sich diese Untersuchung speziell darauf die Leistung von DateTime mit Index im Vergleich zu int mit Index in InnoDB-Tabellen mit Millionen von Datensätzen.
In diesen Szenarien Abfragen mit Kriterien basierend auf:
Empirische Auswertung
Erste Tests mit MySQL 5.1.41 und 10 Millionen Datensätzen zeigen einen bemerkenswerten Geschwindigkeitsvorteil für int:
Query | DateTime with Index (sec) | int with Index (sec) |
---|---|---|
COUNT(*) | 120.27 | 25.02 |
BETWEEN | 8.41 | 1.56 |
Erklärung
Die Effizienz von int wird auf die Tatsache zurückgeführt, dass der Index direkt mit den Abfragekriterien verglichen werden kann, sodass MySQL keine Daten analysieren und konvertieren muss. Im Gegensatz dazu erfordert DateTime eine zusätzliche Verarbeitung, um die Datums- und Zeitkomponenten zu extrahieren und zu vergleichen.
Zusätzliche Überlegungen
Nachfolgende Tests mit beiden in derselben Tabelle gespeicherten Feldtypen ergaben ähnliche Ergebnisse Leistung, was darauf hindeutet, dass MySQL Abfragen optimieren kann, indem es die Äquivalenz von DateTime- und int-Werten erkennt.
Schlussfolgerung
Basierend auf diesen Ergebnissen wird empfohlen, Datums- und Uhrzeitangaben zu speichern als int (UNIX-Zeitstempel), wenn die Leistung indexbasierter Abfragen im Vordergrund steht. Diese Optimierung kann die Ausführungszeit von Abfragen erheblich verkürzen, insbesondere in großen Datenbanken mit häufigen datumsbasierten Kriterien.
Das obige ist der detaillierte Inhalt vonIst die Integer-Indizierung für große Datensätze schneller als die DateTime-Indizierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!