Voor zover ik weet, is de beste manier om zo'n zoekopdracht "bliksemsnel" te maken, het maken van een overzichtstabel die het aantal bekeken pagina's van vrienden per pagina per maker bijhoudt.
U wilt het waarschijnlijk up-to-date houden met triggers. Dan is je aggregatie al voor je gedaan en is het een simpele zoekopdracht om de meest bekeken pagina's te krijgen. U kunt ervoor zorgen dat u de juiste indexen in de overzichtstabel hebt, zodat de database niet eens hoeft te sorteren om de meest bekeken te krijgen.
Overzichtstabellen zijn de sleutel tot het handhaven van goede prestaties voor aggregatiequery's in omgevingen met voornamelijk lezen. U doet het werk vooraf, wanneer de updates plaatsvinden (weinig) en dan hoeven de vragen (frequent) geen werk te doen.
Als je statistieken niet perfect hoeven te zijn, en je schrijft vrij vaak (wat waarschijnlijk het geval is voor paginaweergaven), kun je de weergaven in het geheugen opslaan en op de achtergrond verwerken, zodat de vrienden ze hoeven niet de moeite te nemen om de overzichtstabel up-to-date te houden terwijl ze pagina's bekijken. Die oplossing vermindert ook de strijd met de database (minder processen die de overzichtstabel bijwerken).