Mysql
 sql >> база данни >  >> RDS >> Mysql

Задаването на стойността на една колона от всички редове е много бавно

В InnoDB, update операторите заключват всеки ред, който сканират. Това означава, че за да актуализира вашите 200 реда, той трябва да създаде 350 000 заключвания на ниво ред, като същевременно запазва заключване за връщане назад и предоставя предишната стойност на всички транзакции, които четат вече променената стойност (тъй като транзакцията не е ангажимент и промяната не е окончателна)

MyISAM от друга страна заключва цялата таблица.

Така че, ако трябва да актуализирате всички редове, заключете цялата таблица и ще получите много по-добра производителност (няма да се нуждаете от заключване на ниво ред)

Но още по-добре, осигурете клауза WHERE, както направихте, и InnoDB ще придобие ключалки само за съвпадащите редове (както и някои заключване на пропуски в индексното дърво, но това е извън обхвата на въпроса)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Множество възможности за LINES TERMINATED BY и FELDS TERMINATED BY - MySQL

  2. MySQL тригер, ако съществува условие

  3. Изявление за подготовка на MySql - възможно ли е да се параметризира име на колона или име на функция?

  4. Метод за хеширане на парола Mysql стар срещу нов

  5. Как да конвертирате тези странни знаци? (ë, Ã, ì, ù, Ã)