Добавление индекса в таблицу MySQL
Вопрос
Документация MySQL не очень ясна по этому поводу.Я хочу добавить индекс к существующей таблице.Таблица представляет собой таблицу пользователей с идентификатором входа и паролем, и я хочу создать для этого индекс, чтобы оптимизировать вход в систему.
Вот как я думал, что попробую это сделать:
mysql> ALTER TABLE `users` ADD INDEX(`name`,`password`);
Это создало:
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 | |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
Достигло ли это того, что я пытался сделать?(Оптимизировать вход в систему?) Раньше у меня был только первичный ключ в поле a под названием 'id'.
Решение
Да, это позволило создать индекс.Индекс называется "name
" (если вы не даете индексу имя, он пытается использовать первый столбец, указанный вами в индексе).Индекс состоит из двух столбцов: name
в позиции 1, и password
в позиции 2.
Что касается того, оптимизирует ли это ведение журнала, это зависит от того, как ваши запросы могут использовать или не использовать индекс.Вам также следует узнать о том, как анализировать запросы с помощью EXPLAIN
.
Вам также следует подробнее прочитать о хранении паролей.
Вот хороший блог на эту тему:"Вероятно, вы неправильно Храните Пароли"
Другие советы
Если имена пользователей не уникальны в вашем приложении, я не думаю, что действительно имеет смысл индексировать "пароль".;индекс будет больше, а вставки будут выполняться медленнее без дополнительной ценности.