To answer your question - yes, you would limit to only the last 10 posts with your query.
You query would look something like this:
LEFT OUTER JOIN Message M ON M.UserKey = U.UserKey
M.MessageKey IN (select M2.MessageKey from Message M2 where M2.UserKey = U.UserKey order by M2.PostDate DESC LIMIT 10)
U.UserKey (or whatever.. date?)
Of course, your mileage may vary... but this should hopefully get you started.
For speed, you may want to use an inner join instead of "IN", but then youre gonna have some struggles dealing with the LIMIT and the order.. truth be told, Im not sure how best to do it without an IN, but I've always been told that an IN can always be replaced by a JOIN of some sort.
If you're in one of those predicaments where cls.__private attributes just aren't enough since they can easily be accessed through inst._cls__private, and you need something a little more secure, here's ...