Pregunta

La documentación de MySQL no es muy clara al respecto. Quiero agregar un índice a una tabla existente. La tabla es una tabla de usuario con el ID de inicio de sesión y la contraseña y quiero crear un índice para esto para optimizar el inicio de sesión.

Así es como pensé que lo intentaría:

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

Esto creó:

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      |         |     
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+

¿Logró esto lo que estaba tratando de hacer? (¿Optimizar el inicio de sesión?) Anteriormente solo tenía una clave principal en un campo llamado 'id'.

¿Fue útil?

Solución

Sí, esto logró crear un índice. El índice se denomina " nombre " (Si no le asigna un nombre al índice, intentará usar la primera columna que especifique en el índice). El índice está compuesto de dos columnas: nombre en la posición 1 y contraseña en la posición 2.

En cuanto a si esto optimizará o no el registro, eso depende de cómo sus consultas pueden o no usar el índice. También debe aprender sobre cómo analizar consultas con EXPLAIN .


También debe leer más sobre el almacenamiento de contraseñas.

Aquí hay un buen blog sobre el tema: " Probablemente esté almacenando contraseñas incorrectamente "

Otros consejos

A menos que los nombres de usuario no sean únicos en tu aplicación, no creo que tenga sentido indexar "contraseña"; el índice será más grande y las inserciones serán más lentas sin ningún valor agregado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top