Добавление индекса в таблицу 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      |         |     
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+

Получилось ли это того, что я пытался сделать? (Оптимизировать вход в систему?) Раньше у меня был только первичный ключ в поле с именем «id».

RE: «Документация MySQL не очень ясна по этому поводу». - Это касается очень многих вещей. :)

BobbyShaftoe 03.01.2009 05:06

Спасибо за помощь с форматированием, не знал, как это сделать.

Bjorn 03.01.2009 05:08

Любая строка, начинающаяся с четырех пробелов, имеет кодовое форматирование. Или вы можете выделить кучу текста и щелкнуть значок «010101», и он сделает это за вас.

Bill Karwin 03.01.2009 05:10
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
3
2 894
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Да, удалось создать индекс. Индекс называется «name» (если вы не дадите индексу имя, он попытается использовать первый столбец, который вы укажете в индексе). Индекс состоит из двух столбцов: name в позиции 1 и password в позиции 2.

Что касается того, оптимизирует ли это ведение журнала, это зависит от того, как ваши запросы могут или не могут использовать индекс. Вы также должны узнать, как анализировать запросы с помощью EXPLAIN.


Вам также следует узнать больше о хранении паролей.

Вот хороший блог на тему: "Вероятно, вы неправильно храните пароли"

Мой запрос на вход в систему в основном: ВЫБРАТЬ id ИЗ users, ГДЕ name = "имя" И password = SHA1 ("пароль")

Bjorn 03.01.2009 05:14

На самом деле похоже, что используется ключ: mysql> объяснение выберите id из users, где name = "имя" и password = SHA1 ("пароль"); имеет "имя" в ключевом столбце.

Bjorn 03.01.2009 05:18

Это «объяснение» действительно помогло, я не знал об этом, спасибо!

Bjorn 03.01.2009 05:23

Если имена пользователей в вашем приложении не уникальны, я не думаю, что имеет смысл индексировать "пароль"; индекс будет больше, а вставки будут медленнее без добавленной стоимости.

Другие вопросы по теме