Or just another suggestion:
In a newly added first table will be saved the last 10 posts for every user group / permission set (add a column group_ID). 10 entries for every group ID. In another table will be saved the last update of the first table for every user group. So: every time when a user loads the sidebar, first it will be checked how long ago was the first table for this group (the user belongs to) updated on basis of the second table. If it is over 5 minutes ago, the resource intensive query will be done in respect of the permissions of the user group. The 10 old entries of this group will be deleted from the first table, data of the 10 newest entries inserted. The last update time in the second table will be updated. For the next five minutes every member of this specific group will draw the data of the last 10 posts from the first table. The next intensive query will be in 5 minutes.
Means: Every group will every 5 minutes strain the database a bit.