Verwenden von Text als Primärschlüssel in der SQLite-Tabelle fehlerhaft?

8

Ist es schlecht, Text als Primärschlüssel in einer SQLite-Datenbank zu haben? Ich habe gehört, dass es aus Performance-Gründen schlecht ist, ist das wahr? Und wird die Rowid in so einem Fall als der eigentliche Primärschlüssel verwendet?

    
mpellegr 18.04.2014, 15:40
quelle

2 Antworten

14
  

Ist es schlecht, Text als Primärschlüssel in einer SQLite-Datenbank zu haben? Ich habe gehört, dass es aus Performance-Gründen schlecht ist, ist das wahr?

Aus Gründen der Korrektheit ist TEXT PRIMARY KEY in Ordnung.

Unter Leistungsperspektive bevorzugen Sie INTEGER keys. Wie bei jedem Leistungsproblem sollten Sie jedoch selbst messen, ob es einen signifikanten Unterschied zu Ihren Daten und Anwendungsfällen gibt.

  

Und wird die Rowid in so einem Fall als der eigentliche Primärschlüssel verwendet?

Nur INTEGER PRIMARY KEY erhält einen Alias ​​mit ROWID . Andere Arten von Primärschlüsseln tun dies nicht, und es wird die implizite Integer-Zeilennummer geben, wenn WITHOUT ROWID nicht angegeben ist. Referenz .

    
laalto 18.04.2014 20:06
quelle
5

In der Praxis hat die Verwendung von Zeichenfolgen als Primärschlüssel viele Vorteile, wenn wir über UUIDs sprechen. In der Lage zu sein, Entity "Pass" genau im Moment seiner Erstellung zu erstellen, kann asynchronen Code und / oder verteiltes System massiv vereinfachen (wenn wir über eine komplexere mobile Client / Server-Architektur sprechen).

In Bezug auf die Leistung habe ich keinen messbaren Unterschied festgestellt, wenn ich einen Benchmark für die Durchführung von 10000 Primärschlüssel-Suchvorgängen einsetze, da Datenbankindizes bei indizierten Suchvorgängen weder Zeichenfolgen speichern noch vergleichen.

    
Segabond 21.08.2017 23:28
quelle