Чрезвычайно медленный запрос UPDATE
Я заметил, что мой script стал очень медленным, затем я сузился до проблемы: это был запрос обновления. Странно, что запрос SELECT очень быстрый. В таблице содержится около 600 000 записей. И да, id - УНИКАЛЬНЫЙ ПЕРВЫЙ КЛЮЧ. Вот несколько примеров:
SELECT * FROM `tmp_pages_data` WHERE id = 19080 LIMIT 0 , 30
Showing rows 0 - 0 (1 total, Query took 0.0004 sec)
И теперь запрос на обновление:
UPDATE tmp_pages_data SET page_status = 1 WHERE id = 19080
1 row(s) affected. ( Query took 24.5968 sec )
Как вы можете видеть, выбор выполняется очень быстро, но обновление происходит медленно. Как это возможно?
Ответы
Ответ 1
Да, это очень странно. Единственное, о чем я могу думать, это то, что таблица tmp_pages_data
заблокирована другой транзакцией, или строка с id = 19080
заблокирована другой транзакцией.
Другая (невероятная вещь) заключается в том, что у вас есть индекс на page_status
, который должен быть обновлен в предложении UPDATE
, и эта часть занимает много времени для выполнения.
Ответ 2
Хорошо, сделано!
Мне пришлось перезапустить Apache, теперь он отлично работает (на самом деле я перезагрузил Ubuntu)!
UPDATE tmp_pages_data SET page_status =1 WHERE id =19080
1 row(s) affected. ( Query took 0.0004 sec )
Спасибо всем за ваши предложения:)