SELECT
и других запросов
EXPLAIN
(получение информации о SELECT
)
SELECT
WHERE
DISTINCT
LEFT JOIN
и RIGHT JOIN
ORDER BY
LIMIT
INSERT
UPDATE
DELETE
UPDATE
Запросы UPDATE
оптимизируются как запрос SELECT
с дополнительными
издержками на запись. Скорость записи зависит от размера обновляемых
данных и количества обновляемых индексов. Индексы, которые не были
изменены, обновлены не будут.
Существует и другой способ произвести операции обновления быстро: задерживать операции обновления, а потом делаеть сразу несколько обновлений. Несколько обновлений подряд выполняются намного быстрее, чем отдельные обновления если вы блокируете таблицу.
Обратите внимание: при использовании динамического формата записи, если
запись обновляется более длинной, может произойти "расслоение" записи.
Таким образом, если вы делаете это часто, очень важно время от времени
выполнять команду OPTIMIZE TABLE
. See section 4.5.1 Синтаксис команды OPTIMIZE TABLE
.
User Comments
"another way to get fast updates is to delay updates and then do many updates in a row later. Doing many updates in a row is much quicker than doing one at a time if you lock the table. "
The above is not very clear. What exactly is entailed in "delaying updates"? Is it done via specific MySQL switches/commands or in the application?
Would the following be sufficient (pseudocode)?
----------
LOCK TABLES tbl_name
Loop
UPDATE table
End Loop
UNLOCK TABLES
----------
Add your own comment.