Adicionando um índice para uma tabela MySQL
Pergunta
A documentação do MySQL não é muito clara sobre este assunto. Eu quero adicionar um índice para uma tabela existente. A tabela é uma tabela de usuário com o ID de login e senha e eu quero criar um índice para que isso logging otimizar em.
Isto é como eu pensei que eu iria experimentá-lo:
mysql> ALTER TABLE `users` ADD INDEX(`name`,`password`);
Isto criou:
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 | |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
Será que isso conseguir o que eu estava tentando fazer? (Logging Optimize in?) Antes eu só tinha uma chave primária em um um campo chamado 'id'.
Solução
Sim, este alcançado criando um índice. O índice é denominado "name
" (se você não dá o índice de um nome, ele tenta usar a primeira coluna que você especificar no índice). O índice é um compósito de duas colunas:. name
na posição 1, e password
na posição 2
Quanto a saber se ou não Isto irá otimizar registrá-lo, isso depende de como suas consultas pode ou não pode usar o índice. Você também deve aprender sobre como analisar consultas com EXPLAIN
.
Você também deve ler mais sobre o armazenamento de senhas.
Aqui está um bom blog sobre o assunto: " você está armazenando Provavelmente senhas incorretamente "
Outras dicas
A menos que nomes de usuários não são exclusivos em sua aplicação, eu não acho que isso é realmente fazer sentido para o índice "password"; o índice será maior e inserções será mais lento para qualquer valor acrescentado.