Queries scanning instead of seeking
As tenants grew, filtered lists and soft-deleted rows were scanned on every request.
Indexed every foreign key and every soft-delete flag, then kept adding covering indexes on hot filters (327 in total). A nightly job now refreshes statistics on the main and audit databases.