I allmänhet kan urvalsfiltren använda index på user_id
eller activity_type_id
eller båda (i valfri ordning).
Beställningsoperationen kanske kan använda ett filter på created_at
.
Det är troligt att för den här frågan, ett sammansatt index på (user_id, activity_type_id)
skulle ge det bästa resultatet, förutsatt att MySQL faktiskt kan använda det. Om det misslyckas är det sannolikt bättre att indexera user_id
än activity_type_id
eftersom det sannolikt ger bättre selektivitet. En anledning till att tänka det är att det skulle finnas fyra undersektioner av indexet att skanna om det använder ett index på activity_type_id
, jämfört med bara ett underavsnitt att skanna om det använder ett index på user_id
ensam.
Att försöka förlita sig på ett index för sorteringsordningen innebär sannolikt en fullständig tabellsökning, så det är mindre sannolikt att det är fördelaktigt. Jag skulle inte skapa ett index på created_at
för att stödja denna fråga; det kan finnas andra frågor där det skulle vara fördelaktigt.