Les index accélèrent les requêtes SELECT car les index sont triés par définition. De plus, un index UNIQUE applique la contrainte selon laquelle la valeur de cette colonne (ou la combinaison de valeurs de colonnes liées) n'existe qu'une seule fois (la même chose s'applique à PRIMARY, mais PRIMARY ne peut exister qu'une seule fois par table contrairement à une clé UNIQUE).
Les index sont un compromis :ils accélèrent énormément les requêtes SELECT (lorsque les colonnes utilisées ont un INDEX) mais ils font que la table MySQL consomme plus d'espace et coûte plus de temps lors de la modification de la table via INSERT/UPDATE/DELETE.