It sounds like your production app is slowing down due to the all the database accesses to find the next page, so what you want to do is minimize those.
You can think of progressing through the cirriculum as a sequential
walk through the records, which makes me think of a linked list. So a simple solution is to add a column to your db that gives the location of the next page 'next_page_ID' (assuming that you have a pages table in which each page has a unique ID). Then finding the next page has no extra lookups or tricky hash walking--everything has been precomputed beforehand.