@maksam07

Как реализовать быстрое обновление данных в mysql?

Имеется база одноразовых товаров, для теста загрузил туда около миллиона единиц товара. И вот UPDATE в этой таблице длится 3 секунды. Первый SELECT после UPDATE тоже длится 3 секунды (потом кешируется до следующего UPDATE).
SELECT использую редко, а вот UPDATE'м приходится пользоваться часто, от этого и вопрос, как оптимизируются базы данных? Я не считаю, что миллион строк это много, но уверен, что должно работать явно не 3 секунды все это. Какие данные Вам нужно предоставить или есть какие-то общие советы по составлению БД?

UPDATE and SELECT
5cb637229c4ba813111858.png
только SELECT (закеширован)
5cb637d66ff80367591206.png
timer - время выполнения запроса
  • Вопрос задан
  • 296 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
БД оптимизируются созданием правильных индексов и построением запросов, использующих эти индексы.
Ответ написан
Комментировать
bitniks
@bitniks
Go/PHP/Symfony developer
Чтобы понять, в чем проблема с запросом, нужно посмотреть план выполнения с помощью команды EXPLAIN. Вероятнее всего потребуется добавить индекс на поле, по которому идет выборка данных (условие в WHERE). Могу порекомендовать книгу "MySQL по максимуму", где подробнее написано об EXPLAIN и правильном использовании индексов
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
2ord
@2ord
Можно перед обновлением данных удалить индекс, затем создать его заново.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы