Heim > Datenbank > MySQL-Tutorial > INT- oder VARCHAR-Primärschlüssel für Referenzlisten: Spielt die Leistung wirklich eine Rolle?

INT- oder VARCHAR-Primärschlüssel für Referenzlisten: Spielt die Leistung wirklich eine Rolle?

Patricia Arquette
Freigeben: 2024-12-21 12:03:10
Original
150 Leute haben es durchsucht

INT or VARCHAR Primary Keys for Reference Lists: Does Performance Really Matter?

INT vs. VARCHAR-Primärschlüssel: Mythenzerstörung über Leistungsbedenken

Die Wahl zwischen INT- und VARCHAR-Primärschlüsseln in MySQL wird seit langem diskutiert, insbesondere bezüglich Referenzlisten. Während INT die traditionelle Wahl ist, erfreut sich VARCHAR aufgrund seiner Fähigkeit, Informationen direkt darzustellen und möglicherweise den Bedarf an JOINs zu reduzieren, wachsender Beliebtheit.

Dieser Artikel zielt darauf ab, die Auswirkungen der Verwendung von INT- und VARCHAR-Primärschlüsseln auf die Leistung zu untersuchen in einem bestimmten Anwendungsfall: Referenzlisten wie US-Bundesstaaten und Ländercodes.

Benchmark Ergebnisse

Um den Leistungsunterschied zu beurteilen, wurde eine Reihe von Benchmarks mit einem Setup durchgeführt, bestehend aus:

  • Intel® Core™ i7-7500U CPU bei 2,70 GHz × 4
  • 15,6 GiB RAM
  • Ubuntu 16.04 64-Bit
  • MySQL Ver 14.14 Distrib 5.7.20

Es wurden zwei Tabellensätze erstellt: INT-Tabellen und VARCHAR-Tabellen, jeweils indiziert und nicht indiziert. Die Tabellen wurden dann mit 10 Millionen Zeilen gefüllt und eine Benchmark-Abfrage wurde für jede Tabelle ausgeführt, um die Zeit zu messen, die zum Abrufen einer bestimmten Zeile erforderlich war.

Benchmark-Abfrageausführungszeiten

Die Ausführungszeiten der Benchmark-Abfrage sind wie folgt:

  • jan_int: 21.30 Sek
  • jan_int_index: 18,79 Sek.
  • jan_char: 21,70 Sek.
  • jan_char_index: 18,85 Sek.
  • jan_varchar: 21,76 Sek.
  • jan_varchar_index: 18,86 sec

Analyse

Die Ergebnisse zeigen, dass der Leistungsunterschied zwischen INT- und VARCHAR-Primärschlüsseln für Referenzlisten minimal ist. Die Ausführungszeiten der Benchmark-Abfragen liegen innerhalb weniger hundert Millisekunden voneinander, unabhängig davon, ob der Schlüssel indiziert ist oder nicht.

Dies deutet darauf hin, dass die Leistungsvorteile der Reduzierung von JOINs mithilfe eines VARCHAR-Primärschlüssels durch die zusätzlichen ausgeglichen werden Mehraufwand für die Speicherung von Daten variabler Länge.

Schlussfolgerung

Basierend auf den Benchmark-Ergebnissen kann eine Schlussfolgerung gezogen werden dass bei Referenzlisten wie US-Bundesstaaten und Ländercodes die Wahl zwischen INT- und VARCHAR-Primärschlüsseln in erster Linie eine Frage der Präferenz und nicht der Leistung ist. Der Leistungsunterschied ist vernachlässigbar und andere Faktoren wie Datenkonsistenz und zukünftige Skalierbarkeit können die Entscheidung beeinflussen.

Das obige ist der detaillierte Inhalt vonINT- oder VARCHAR-Primärschlüssel für Referenzlisten: Spielt die Leistung wirklich eine Rolle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage