create a new index column which contains a heirachical page index, e.g.
000 = home page
001 = section 1
002 = section 2
001001 = section 2 sub page 1
001002 = section 2 sub page 2
You will need to allow as many digits as you need for each level.
Construct the column whenever a page is added or changed.
A simple sort on the column will give you what you need.
Note also that you could do away with page parent and page level as you can extract this from the new column. Page level is merely a factor of the length of the column value (3,6,9,12...) and page parent is the value of the column less the last three (or whatever) digits.
This also means the model is extendable to as many levels as you like. ooohhh - you could even have a use for recursive functions!
If you can be sure of your code you can use the column as the primary key and you may not need the page_id either.
Hope this helps,
Cris