In der Datenbank können datetime, bigint und timestamp zur Darstellung der Zeit verwendet werden. Welcher Typ ist also für die Zeitspeicherung besser geeignet? # Nachbereitung der DatenFügen Sie über das Programm 50 W-Daten in die Datenbank ein Datenblatt: CREATE TABLE `Benutzer` ( `id` int(11) NICHT NULL AUTO_INCREMENT, `time_date` Datum/Uhrzeit NICHT NULL, `time_timestamp` Zeitstempel NICHT NULL STANDARD CURRENT_TIMESTAMP BEI UPDATE CURRENT_TIMESTAMP, `time_long` bigint(20) NICHT NULL, Primärschlüssel (`id`), SCHLÜSSEL `time_long` (`time_long`), SCHLÜSSEL `time_timestamp` (`time_timestamp`), SCHLÜSSEL `time_date` (`time_date`) ) ENGINE=InnoDB AUTO_INCREMENT=500003 DEFAULT CHARSET=latin1 Unter diesen sind time_long, time_timestamp und time_date unterschiedliche Speicherformate für dieselbe Zeit. Entitätsklassenbenutzer /** * @Autor hetiantian * @Datum 21.10.2018 * */ @Erbauer @Daten öffentliche Klasse Benutzer { /** * Selbstinkrementierende eindeutige ID * */ private lange ID; /** * Datum Typ Uhrzeit * */ privates Datum UhrzeitDatum; /** *Zeit des Zeitstempeltyps* */ privater Zeitstempel timeTimestamp; /** * Lange Tippzeit * */ privat lange ZeitLang; } DAO-Schichtschnittstelle /** * @Autor hetiantian * @Datum 21.10.2018 * */ @Mapper öffentliche Schnittstelle UsersMapper { @Insert("Einfügen in Benutzer(Zeit_Datum, Zeit_Zeitstempel, Zeit_Lang) Wert(#{timeDate}, #{timeTimestamp}, #{timeLong})") @Options(useGeneratedKeys = true,Schlüsseleigenschaft = "id",Schlüsselspalte = "id") int saveUsers(Benutzer Benutzer); } Die Testklasse fügt Daten in die Datenbank ein öffentliche Klasse UsersMapperTest erweitert BaseTest { @Ressource privater UsersMapper BenutzerMapper; @Prüfen öffentlicher void-Test () { für (int i = 0; i < 500000; i++) { lange Zeit = System.currentTimeMillis(); usersMapper.saveUsers(Users.builder().timeDate(neues Datum(Zeit)).timeLong(Zeit).timeTimestamp(neuer Zeitstempel(Zeit)).build()); } } } Um Datencode zu generieren, gehen Sie zu GitHub: https://github.com/TiantianUpup/sql-test/. Wenn Sie keine Codegenerierung verwenden möchten, sondern Daten über eine SQL-Datei importieren möchten, ist die Netzwerkdatenträgeradresse der SQL-Datei am Ende des Artikels angehängt. # SQL-AbfrageratentestAbfrage nach Datums-/Uhrzeittyp: Wählen Sie count(*) aus Benutzern aus, wobei time_date >="2018-10-21 23:32:44" und time_date <="2018-10-21 23:41:22" Benötigte Zeit: 0,171 Abfrage nach Zeitstempeltyp Wählen Sie count(*) aus Benutzern aus, wobei time_timestamp >= "2018-10-21 23:32:44" und time_timestamp <="2018-10-21 23:41:22" Benötigte Zeit: 0,351 Abfrage nach Bigint-Typ Wählen Sie count(*) aus Benutzern aus, wobei time_long >=1540135964091 und time_long <=1540136482372 Dauer: 0,130 s Fazit: Unter der InnoDB-Speicher-Engine ist die Leistung der Suche nach Zeitbereich bigint > datetime > timestamp # SQL-Gruppenratentest
Gruppieren nach Datums-/Uhrzeittyp: Wählen Sie time_date, count(*) aus der Benutzergruppe nach time_date Dauer: 0,176 s Gruppieren nach Zeitstempeltyp: Wählen Sie time_timestamp, count(*) aus der Benutzergruppe nach time_timestamp Dauer: 0,173 s Fazit: Unter der InnoDB-Speicher-Engine ist die Leistung bei der Zeitgruppierung von Zeitstempel > Datum/Uhrzeit, der Unterschied ist jedoch nicht groß. # SQL-SortierratentestNach Datums-/Uhrzeittyp sortieren: Wählen Sie * aus den Benutzern aus, sortiert nach Zeit_Datum Benötigte Zeit: 1.038s Nach Zeitstempeltyp sortieren Wählen Sie * aus der Benutzerreihenfolge nach Zeit_Zeitstempel aus. Dauer: 0,933 s Nach Bigint-Typ sortieren Wählen Sie * aus den Benutzern aus, sortiert nach time_long Dauer: 0,775 s Fazit: Unter der InnoDB-Speicher-Engine ist die Leistung von bigint > timestamp > datetime durch Zeitsortierung # ZusammenfassungWenn Sie das Zeitfeld bearbeiten müssen (z. B. Suchen oder Sortieren nach Zeitbereich usw.), wird die Verwendung von Bigint empfohlen. Wenn das Zeitfeld keine Operation benötigt, wird die Verwendung von Zeitstempel empfohlen. Die Verwendung von 4 Bytes zum Speichern von Speicherplatz ist praktischer, aber die aufgezeichnete Zeit ist auf 2038 begrenzt. Die SQL-Datei-Netzwerkfestplattenadresse im Artikel: Link: https://pan.baidu.com/s/1cCRCxtTlPriXMERGsbnb_A Extraktionscode: hbq2 Damit ist dieser Artikel über die Auswahl zwischen datetime, bigint und timestamp zur Darstellung der Zeit in MySQL-Datenbanken und die effizienteste Methode zur Zeitspeicherung abgeschlossen. Weitere Informationen zu datetime, bigint und timestamp in Datenbanken finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
1 Holen Sie sich das Installationsressourcenpaket...
Um die Anforderungen effizient zu erfüllen und au...
Vorwort Histogramme sind grundlegende statistisch...
Vorwort In MySQL verwenden sowohl Innodb als auch...
Kopieren Sie den folgenden Code in den Codebereich...
In diesem Artikel wird der spezifische Code von V...
Installationsreihenfolge rpm -ivh mysql-community...
In diesem Artikelbeispiel wird der spezifische Co...
Holen Sie sich das aktuelle Datum + die aktuelle ...
Das Wechseln von Dateien ist eine gängige Operati...
Wenn wir Kubernetes lernen, müssen wir in der Kub...
Originallink: https://vien.tech/article/138 Vorwo...
Der Dateiname der dynamischen Bibliotheksdatei un...
Grundlagen Die Reihenfolge der Standortübereinsti...
Inhaltsverzeichnis Vorwort Stillader CSS-Lader Sa...