Dado que la consulta ya es bastante simple, las opciones que buscaría son...
- Plan de ejecución (para encontrar los índices faltantes que podría agregar)
- almacenamiento en caché (para garantizar que SQL ya tenga todos los datos en RAM)
- desnormalización (para convertir la consulta en selección plana)
- almacene en caché los datos en la aplicación (para que pueda usar algo como PLINQ)
- Utilice una tienda basada en ram (redis, elastic)
- Ajustes de grupos de archivos (mover físicamente la base de datos a discos más rápidos)
- Divide tus tablas (para distribuir los datos sin procesar en varios discos físicos)
Cuanto más avanza en esta lista, más complicadas se vuelven las soluciones. Supongo que depende de qué tan rápido necesite que sea la consulta y cuánto necesite escalar su solución.