WPMediaVerse was designed specifically around this architectural problem. Instead of adding CPT rows to wp_posts, it stores media in three dedicated, indexed tables:
- mvs_media_index: the canonical media record with type, owner, album, privacy, timestamps
- mvs_media_meta: flexible metadata (EXIF, tags, custom fields) kept away from the hot index
- mvs_media_stats: view counts, reactions and engagement, isolated so analytics writes never block feed reads
The result is that media queries do not touch wp_posts at all and scale independently. You still get the full feature set on top: drag-and-drop uploads, six privacy levels, albums, six reaction types, threaded comments, favorites, @mentions, follows, direct messaging, an Explore feed and a full lightbox. BuddyPress integration activates automatically so activity feed uploads and profile/group media tabs light up.
For extensibility there are 80+ action and filter hooks, 80+ REST endpoints across 17 controllers and 8 WP-CLI commands for bulk operations, migrations, cache management and moderation. Everything follows PSR-4 with a service container and lazy-loaded dependencies.
Honest limit: the free version is local storage. Pro adds S3 and BunnyCDN drivers, which is usually the next step after fixing the database layer on a site your size.