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 .
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.
Tags und Links android database sqlite primary-key rowid