Aber mir sind die unterschiedlichen Sichten und wie ich sie darstellen sollte noch nicht klar. Es ist unmöglich, immer alle ca. 30.000 Zeilen zu laden.
Ja hat denn Deine Gliederung 30.000 Zeilen? Wenn ja taugt das Modell wohl eher nicht für ein View. Ansonsten: Ich würde Gliederung und Daten schon von der Datenhaltung her auf 2 Tabellen aufteilen. Für die Darstellung einer Gliederung im Browser gibt es Libraries zum Ein- und Ausklappen.
Der Zugriff auf die zweite Tabelle erfolgt erst, wenn der Betrachter einen bestimmten Gliederungspunkt anklickt, hier kommt dann ein Paginator zum Einsatz sollte sich mehr als eine Seite ergeben. Oder die Inhalte werden beim Scrollen nachgeladen.
MfG