Новый комментарий

Developer 30.03.2020 в 16:15

" А если вы точно знаете, какие комбинации ключей будут использоваться, то они станут наилучшими кандидатами для построения индексов, состоящих из нескольких столбцов."
Можно пожалуйста вот это объяснить более просто?)

ivashkevich 30.03.2020 в 16:22

Если вы знаете, что в запросах будут часто использоваться выборки по столбцам "рубрика" и "цена", значит индекс следует создавать на эти два столбца.

Developer 30.03.2020 в 17:53

Благодарю

Fill 17.04.2020 в 20:15

К примеру, если бы в табличке users было поле gender, хранящее пол пользователя, а на сайте была бы какая-то поиск, формирующий запрос:

ivashkevich 18.04.2020 в 05:57

Спасибо, поправил!

Sviatoslav 30.05.2020 в 17:47

Я правильно понял, что был создан один уникальный индекс для всех записей "Иван"? Даже если это были бы разные Иваны, но одинаково записаны в этом столбце?

ivashkevich 01.06.2020 в 07:33

Нет, он не уникальный. Напишите запрос для создания уникального индекса в качестве дополнительной домашки.

Sviatoslav 01.06.2020 в 20:25

Уже прочитал в чём разница между обычным и уникальным индексом. В случае уникального индекса, при поиске данных, MySQL остановится после обнаружения первого соответствия. В случае обычного индекса будет обязательно проведена еще одна проверка (следующего значения в индексе).
Уникальные индексы есть смысл задавать на email или логин, если они уникальные в таблице. Я верно понял?

ivashkevich 01.06.2020 в 20:33

Абсолютли)

[email protected] 05.06.2020 в 12:52

ПОдскажите, пожалуйста, решение проблемы. Был создан индекс name_idx, но при выполнении запроса EXPLAIN SELECT * FROM users WHERE name="Ваня" индекс не используется. Прикрепляю скрин.описание картинки

ivashkevich 06.06.2020 в 08:23

Каким запросом создавали индекс?

[email protected] 07.06.2020 в 14:02
CREATE INDEX name_idx ON users(name);
ivashkevich 08.06.2020 в 07:50

Добавьте в таблицу еще несколько пользователей с именем != Иван/Ваня

[email protected] 08.06.2020 в 13:46

Спасибо, помогло. А почему помогло добавление новых записей с другими именами?

[email protected] 24.06.2020 в 20:50

У вас опечатка в тексте.

Но всё же что это такое, как работают индексы, и для чего они предназначены мы изучим лишь в этому уроке.

ivashkevich 25.06.2020 в 11:21

Спасибо, исправил

Evgen 15.07.2020 в 00:18

А почему "rows - число записей, которые пришлось проверить прежде чем отдать результат" в случае с индексом у нас при 9 записях (у меня 12) значение rows 3 в вашем примере и 2 в моем случае (по числу строк с искомым значением), если бин. поиск должен обходить [log(2)отN]строк, т.е. в худшем случае 4 в примере, да и 4 - в моем случае. Повезло?)

ivashkevich 16.07.2020 в 12:52

Хороший вопрос, на который у меня нет ответа) Предлагаю погуглить как это работает и что именно это за число.

Deo 31.12.2020 в 15:58

У меня почему то EXPLAIN SELECT * FROM users WHERE name="Иван";
до создания индекса выдаёт значение row = 8, а не 9, хотя юзеров так же 9...?

ivashkevich 04.01.2021 в 06:55

Гуглить пробовали почему так?)

Deo 04.01.2021 в 17:13

Гугл не помог. Помогло удаление таблиц с неизвестной ошибкой (users, articles, categories) и создание их заново.

[email protected] 16.04.2021 в 13:05

То есть составной индекс это по-сути 2 индекса соединенных между собой. И если нам не требуется уникальная пара значений в нескольких столбцах, то смысла в них нет, ведь WHERE делает тоже самое, сначала сужает выборку по первому условию, затем по второму и т.д.
Правильно?

ivashkevich 17.04.2021 в 20:58

Нет, это работает не как 2 отдельных индекса. Погуглите про составные, вроде на ruhighload была хорошая статья

Логические задачи с собеседований