Ich habe eine SQLite-Datenbank verwendet, um Informationen über Sicherungsaufträge zu speichern. Bei jedem Lauf erhöht sich die Anzahl der Einträge um ca. 25 MB, wenn in einer bestimmten Tabelle etwa 32.000 Einträge hinzugefügt werden.Primärschlüssel Auswirkung auf die Leistung in SQLite
Diese Tabelle ist eine "Zuordnungstabelle", die verwendet wird, um bestimmte Informationen mit Datensätzen in einer anderen Tabelle zu verknüpfen ... und sie hat einen Primärschlüssel (autoinkrement int), den ich nicht verwende.
sqlite reserviert je nach Wert 1, 2, 4 oder 8 Byte für die INT-Spalte. Diese Tabelle hat nur 3 zusätzliche Spalten, ebenfalls vom Typ INT.
Ich habe Indizes zu der Datenbank für die Spalten hinzugefügt, die ich als Filter (WHERE) in meinen Abfragen verwende.
Haben Primärschlüssel in der Gegenwart von Indizes usw. und in der beschriebenen Situation einen nützlichen Vorteil in Bezug auf die Leistung?
Hinweis: Leistung ist sehr, sehr wichtig für dieses Projekt - aber nicht, wenn 10ms gespeichert auf einem 32.000 Eintrag Job bedeutet zusätzliche 10MB Daten!
stimme ich größtenteils damit überein. Die wichtige Idee ist, die Datenbank im Speicher zu behalten, und wenn die Indizes zu groß sind, dann kann das eine Rolle spielen. – Unknown
@Unknown: Bei einer normalen disk-backed, Speicher-Caching-Datenbank sollten nicht verwendete Indizes nicht in den Speicher gelangen, und wenn dies der Fall ist, sollten sie relativ bald wieder entfernt werden. Aber wenn Sie eine komplette In-Memory-Datenbank ohne Backup-Plattenspeicher erstellen, werden Ihnen diese Indizes wahrscheinlich weh tun. – Thilo