moin,
- Frage: Gibt es einen anderen Weg eine solche Matrix zu erstellen, ohne dass die Tabelle so groß wird?
nicht wirklich, du brauchst ja all diese informationen. insofern müssen sie auch rein in die datenbank. was man machen könnte wäre eine partitionierung, das heißt in teilbereiche aufteilen.
- Frage: Wenn man eine solch große Tabelle benutzt, ist natürlich eine sinnvolle Indizierung zwingend.
eine nicht ganz richtige aussage. die frage ist nicht nur, ob die tabelle gross ist, sondern welche anweisungen du dort ausführst. wenn du zum beispiel immer alle datensätze ändernst oder selektierst, dann bringt dir ein index wenig, egal wie große die tabelle ist.
Da bei jedem Scriptaufruf sowohl ein SELECT (mag Indizes, weil es dadurch viel schneller wird) als auch ein UPDATE (mag keine Indizes, weil es jedesmal den Index neu schreiben muss) anfallen - was wäre denn nun die sinnvollste Indizierung einer solchen Matrix?
erst einmal stellst sich die frage, ob man das SELECT vorher überhaupt braucht und nicht gleich ein update machen kann. das hängt von dem jeweiligen fall ab. und auch bei einem update kann ein index, sehr viel bringen. so wie bei den abfragen hängt dies aber sehr stark davon ab, wie das update genutzt wird.
oder mit anderen worten, tuning ist eine sehr individuelle sache, je mehr infos man hat, desto besser.
Ilja