Индексирование двух похожих таблиц в двух разных базах данных: увеличение скорости на одной и ничего на другой - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть две базы данных - db1 и db2 почти схожей конструкции. У одной из них есть таблица users с 40 000 записей, у другой также есть таблица users с 50 000 записей.

В обеих этих таблицах есть ключ user, который я решил проиндексировать, поэтому поскольку select foo where user = bar операторы не заняли бы много времени.

Я успешно выполнил это на db1, тем самым уменьшив время упомянутого оператора select с 0,03 до примерно 0,001.

Но Я был очень удивлен, обнаружив, что индексирование аналогичной таблицы в db2 ничего не изменило по скорости. Просто ничего. Оператор SELECT принимает тот же 0,03 SE c, как и раньше. Я попытался удалить индекс и добавить его снова, но ничего не изменилось.

Стоит отметить, что я использовал одно и то же предложение для создания индекса:

create index user on users(user);

Обе базы данных находятся на тот же сервер.

Я попытался перезапустить сервер mysql.

В чем может быть проблема?

1 Ответ

2 голосов
/ 12 апреля 2020

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

Проблема заключалась в том, что в базе данных, где индекс не работал, тип столбца user был varchar.

Итак, я изменил его на bigint, как в первой базе данных, - и сразу получил такое же повышение производительности, что и в первой таблице.

Стоит отметить, что столбец на самом деле ничего не было, кроме чисел длиной до 9. Не совсем понятно, почему индексирование столбца varchar не дало никакого эффекта, но, по крайней мере, сейчас есть обходной путь.

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

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