Question

J'ai une table assez simple (pardonner les erreurs / stupidité, je suis encore à apprendre écrit pour MySQL.) :

CREATE TABLE IF NOT EXISTS  `userdata` (
    `userid`    UNSIGNED int(18446744073709551615) AUTO_INCREMENT, 
    `username`  char(255) NOT NULL,
    `password`  char(255) NOT NULL,
    `salt`      char(255) NOT NULL,
    `email`     char(255) NOT NULL,

    PRIMARY KEY(`userid`)
);

J'ai lu que l'ajout d'un index améliore les performances d'une requête, car il n'a pas besoin de regarder à travers la base de données. Au lieu de cela, il va chercher dans les données d'index et match (corrigez-moi si je me trompe).

Je l'ai trouvé comment créer un indice assez bien, mais pas ce que je devrais être indexation.
Dois-je avoir mon index sur les noms d'utilisateur? adresses e-mail, ID utilisateur, ou un domaine que je n'ai pas encore à ajouter?

Était-ce utile?

La solution

vous ne devez créer un index basé sur l'utilisation réelle vous de la colonne

utilisation dans un WHERE :
si vous n'avez WHERE username='xyz', l'index est pas nécessaire
si vous avez beaucoup d'entre eux, puis ajouter un index

utilisation dans un JOIN :
si vous n'avez pas JOIN xxxx ON x.userid=u.userid, alors aucun index est nécessaire
si vous avez beaucoup d'entre eux, puis ajouter un index

Autres conseils

Vous devriez avoir un index sur à peu près toutes les colonnes que vous faites calée sur les recherches. Est-ce quelque chose va faire une where userid = ? dans l'une de vos questions? Indice ensuite sur userid. Est-ce que vous allez faire une recherche sur des username? Puis index sur le nom d'utilisateur. Qu'en est-il sur password? Probablement pas, donc ne vous inquiétez pas.

Quels champs vous rechercherez sur? Celles-ci devraient être vos premiers candidats pour les index. indexent également des colonnes qui deviendront des clés étrangères dans d'autres tables (userid semble comme un candidat probable).

ID primaire devrait aller à l'ID utilisateur. Il est très utile maintenant et à long terme.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top