Eftersom frågan redan är ganska enkel är alternativen jag skulle titta på ...
- Utförandeplan (för att hitta saknade index som du kan lägga till)
- cache (för att säkerställa att SQL redan har all data i ram)
- avnormalisering (för att göra om frågan till flat select)
- cacha data i applikationen (så att du kan använda något som PLINQ på den)
- Använd en rambaserad butik (redis, elastisk)
- Filgruppsjusteringar (flytta fysiskt db till snabbare skivor)
- Partitionera dina tabeller (för att sprida rådata över flera fysiska skivor)
Ju längre du går ner på den här listan desto mer involverade blir lösningarna. Jag antar att det beror på hur snabb du behöver att frågan ska vara och hur mycket du behöver din lösning för att skala.