Оптимизировать простой запрос на обновление MySQL
Простой запрос на обновление занимает слишком много времени.
Мне нужно оптимизировать этот запрос. Там нет объединения, это не должно занимать так много времени.
Простой запрос на обновление приведен ниже:
UPDATE need
SET `column7` = "in ABC and in", # type: text
`column9` = "in Abc and in ", # type: text
`column15` = "", #type: text
`column32` = "0" #type: tinyint(1)
WHERE id = "36851"
Field Type Collation
-------------------------- ------------------- ---------------
id bigint(20) unsigned (NULL)
column01 varchar(320) utf8_unicode_ci
column02 varchar(1024) utf8_unicode_ci
column03 longblob (NULL)
.
.
.
.
column32 tinyint(1) (NULL)
column33 tinyint(3) unsigned (NULL)
Пожалуйста, предложите что-нибудь.
2 ответа
Добавление большего количества индексов сделает вставку медленнее, а не быстрее, но сделает выбор быстрее.
Можете ли вы перечислить полное определение таблицы?
Также возможно, что макет базы данных не очень эффективен для обновления. Таблица вообще выглядит довольно большой, так что, возможно, лучше разбить ее на разные таблицы, чтобы ваше обновление могло повлиять на меньшее количество данных...
Вы также можете выбрать дизайн БД, который наилучшим образом соответствует вашим требованиям, поэтому, если у вас много обновлений, выберите BCNF или 4-й NF для макета. Если у вас больше чтений, чем выбирайте в лучшем случае 3NF, который должен быть в основном стандартной нормальной формой БД.
Все вышеперечисленное BCNF имеет недостаток, потому что вы теряете зависимости FD, так что вы получите больше избыточностей...
Вот краткое введение в NF: http://en.wikipedia.org/wiki/Database_normalization