Должно ли каждое поле MYSQL, которое будет использоваться в предложении "WHERE", иметь индекс? - PullRequest
3 голосов
/ 24 марта 2020

Мне интересно, следует ли добавлять индексы к различным полям в таблице, когда известно, что эти поля будут использоваться в запросах "SELECT ... WHERE [field] = ...".

Например, допустим, у меня есть таблица "user" со следующими полями:

 id(primary), userName, firstName, lastName

Предполагается, что у меня будет запрос типа "SELECT * FROM user WHERE userName = 'someUser123';", индекс должен быть добавлен в столбец userName?

Будет ли этот запрос быстрее, если будет индекс, в случае, когда у меня тысячи записей?

1 Ответ

3 голосов
/ 24 марта 2020

В общем, да, поиск по столбцу выполняется быстрее, если есть индекс.

Подумайте о телефонной книге. Если я попрошу вас найти всех, чья фамилия «Смит», это очень быстро, потому что вы можете предположить, что книга отсортирована по фамилии, и все «Смиты» объединены в алфавитном порядке.

Это основы c представление о том, как работают индексы. Они отсортированы, и из-за этого поиск может быть выполнен намного быстрее.

Следует ли индексировать каждый столбец? Это гораздо более сложный вопрос.

Вам может понравиться моя презентация Как создавать индексы, на самом деле .

И видео, где я представляю это: https://www.youtube.com/watch?v=ELR7-RdU9XU

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...