Domanda

La documentazione di MySQL non è molto chiara al riguardo. Voglio aggiungere un indice a una tabella esistente. La tabella è una tabella utente con ID di accesso e password e desidero creare un indice per ottimizzare l'accesso.

Ecco come ho pensato di provarlo:

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

Questo creato:

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

Questo ha ottenuto ciò che stavo cercando di fare? (Ottimizzare l'accesso?) In precedenza avevo solo una chiave primaria in un campo chiamato 'id'.

È stato utile?

Soluzione

Sì, questo è stato realizzato creando un indice. L'indice è denominato " name " (se non si assegna un nome all'indice, tenta di utilizzare la prima colonna specificata nell'indice). L'indice è composto da due colonne: name in posizione 1 e password in posizione 2.

Per quanto riguarda se questo ottimizzerà o meno la registrazione, ciò dipende da come le tue query possono o meno utilizzare l'indice. Dovresti anche imparare come analizzare le query con EXPLAIN .


Dovresti anche leggere di più sulla memorizzazione delle password.

Ecco un buon blog sull'argomento: " Probabilmente stai memorizzando le password in modo errato "

Altri suggerimenti

A meno che i nomi utente non siano univoci nella tua applicazione, non penso che abbia davvero senso indicizzare " password " ;; l'indice sarà più grande e gli inserti saranno più lenti senza valore aggiunto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top