Question

La documentation de MySQL n’est pas très claire à ce sujet. Je veux ajouter un index à une table existante. La table est une table utilisateur avec l'identifiant de connexion et le mot de passe. Je souhaite créer un index à cette fin afin d'optimiser la connexion.

Voici comment je pensais pouvoir l'essayer:

mysql> ALTER TABLE `users` ADD INDEX(`name`,`password`);

Cette création:

mysql> show index from karmerd.users;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+   
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |    
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+    
| users |          0 | PRIMARY  |            1 | id          | A         |           2 |     NULL | NULL   |      | BTREE      |         |     
| users |          1 | name     |            1 | name        | A         |           2 |     NULL | NULL   |      | BTREE      |         |     
| users |          1 | name     |            2 | password    | A         |           2 |     NULL | NULL   | YES  | BTREE      |         |     
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+

Est-ce que cela a permis d'atteindre ce que j'essayais de faire? (Optimiser la connexion?) Auparavant, je n'avais qu'une clé primaire dans un champ appelé "id".

Était-ce utile?

La solution

Oui, cela a permis de créer un index. L'index s'appelle " nom " (Si vous ne nommez pas l'index, il essaie d'utiliser la première colonne que vous spécifiez dans l'index). L'index est composé de deux colonnes: nom en position 1 et mot de passe en position 2.

Quant à savoir si cela optimisera ou non la journalisation, cela dépend de la manière dont vos requêtes peuvent ou non utiliser l'index. Vous devez également apprendre à analyser les requêtes avec EXPLAIN .

Vous devriez également en savoir plus sur le stockage des mots de passe.

Voici un bon blog sur le sujet: " Vous ne stockez probablement pas les mots de passe de manière incorrecte "

Autres conseils

À moins que les noms d'utilisateur ne soient pas uniques dans votre application, je ne pense pas que ce soit vraiment logique d'indexer "mot de passe"; l'index sera plus grand et les insertions seront plus lentes sans aucune valeur ajoutée.

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