Nihao hat geschrieben: Do 19. Jan 2023, 13:35
Ich habe bei den Positionen zur Rechnung auch die Kunden ID und kann so bei jeder neuen Rechnung, sehr schnell die bereits gekauften Kundenprodukte abrufen. Diese sollten aber nach Datum des Kaufs sortiert sein.
Da Rechnungen nach einer gewissen Zeit ausgelagert/gelöscht werden, die Positionen aber nicht, eben wegen der Kunden-Produkt-History, brauche ich dort das Datum.
Ich kann mir zwar vorstellen das aus Datenschutz/Sicherheit bestimmte Daten nur begrenzt gelagert werden.... Bin nicht sicher ob das hier der Fall ist.
Wenn das der Fall ist: Bravo. Denn die meisten sind zu Faul da was zu tun.
Wenn es um Kosten sparen (Server mit weniger Resourcen geht), wie andere schon angemerkt haben, bei so viel Kunden Aktivität sollte ein Upgrade möglich sein. Oder aber es ist das falsch DB backend.
---------------------
Ich würde das Datum nicht verschieben sondern
table RECHNUNG_MAIN
id
date
// ggf laufende nummer
table RECHNUNG_DETAIL
id
was immer sonst derzeit in rechnung ist
table RNG_POS
bleibt wie bisher
Dann kannst Du rows in RECHNUNG_DETAIL entfernen wann immer Du möchtest.
-------------------
Geschwindigkeit sollte das nicht wirklich beeinflussen.
Falls doch, oder falls Geschwindigkeit eine Issue ist, dann sind die Indexe nicht gut geplant.
Und wenn es wirklich so heiß hergeht, das es dauernd Wartezeiten gibt, ggf
- Tabellen partitionieren (wichtig ist gute Kriterien zu finden).
- Indexes mit kompletten Daten für bestimmte Queries "index only lookup" (besonders in Kombination mit "conditional index")
- Conditional indexes, z.B nur für offene Rechnungen, oder für Rechnungen in einem Bestimmtem Bearbeitungszustand (Wenn hier andere Abfragen angewandt werden)