sql >> Databasteknik >  >> RDS >> Mysql

Vad bör indexeras för att förbättra prestandan?

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.



  1. PHP-skript för att fylla i MySQL-tabeller

  2. Postgres:FEL:värde för långt för att typtecken varierar (255) Anger inte fältet

  3. En översikt över den nya DBaaS från MariaDB - SkySQL

  4. SELECT-fråga med bokstavstecken (kolon, semikolon) i Oracle