Right now, every post, page, or attachment is stored in the wp_posts table. This means that if you have 10,000 images and 50 posts+pages, every time you go to view a post or a page, it's querying a 10,000-row table instead of a 50-row table.
The table could be partitioned into wp_posts and wp_attachments, then if a query needed to be run that really did require searching both, you would use a view instead.
Written correctly, the schema could be written to allow other kinds of logical partitioning (eg, partitioning the tables by year).