У меня есть таблица mysql, содержащая 400 000 строк
всякий раз, когда я запускаю PHP script для обновления одной строки, для этого требуется около 3-4 секунд.
Как оптимизировать запрос на обновление?
UPDATE `weakvocab` SET `times` = times+1, `wrong` = wrong+1, `mtime` = 1284369979 WHERE `owner` = 'owner_name' AND `vocID` = 'ID_number' AND `type` = 'type_name';
Этот запрос касается обновления пользовательских данных после ответа на вопрос, поэтому мне нужен быстрый запрос, чтобы дать пользователю лучший опыт при загрузке следующего вопроса.
Спасибо,
Являются ли столбцы в вашем индексе WHERE индексированными? Измените UPDATE на SELECT, чтобы увидеть, как Mysql выполняет его:
EXPLAIN SELECT * FROM `weakvocab` WHERE `owner` = 'owner_name' AND `vocID` = 'ID_number' AND `type` = 'type_name';
и вставьте результат здесь
Вы можете попробовать добавить индекс на (owner_name, vocID, type)
, чтобы можно было быстрее найти запись для обновления.