Оптимизировать простой запрос на обновление MySQL - PullRequest
0 голосов
/ 02 марта 2012

Простой запрос на обновление занимает слишком много времени.

Мне нужно оптимизировать этот запрос. Присоединения нет, это не должно занимать так много времени.

Простой запрос на обновление приведен ниже:

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 ]

0 голосов
/ 02 марта 2012

Также возможно, что макет базы данных не очень эффективен для обновления. Таблица вообще выглядит довольно большой, так что, возможно, лучше разбить ее на разные таблицы, чтобы ваше обновление могло повлиять на меньшее количество данных ...

Вы также можете выбрать дизайн БД, который наилучшим образом соответствует вашим требованиям, поэтому, если у вас много обновлений, выберите BCNF или 4-й NF для макета. Если у вас больше операций чтения, чем в лучшем случае, выберите 3NF, который должен быть в основном стандартной нормальной формой БД.

У всего вышеперечисленного BCNF есть недостаток, потому что вы теряете зависимости FD, поэтому у вас будет больше избыточностей ...

Вот краткое введение в НФ: http://en.wikipedia.org/wiki/Database_normalization#Normal_forms

0 голосов
/ 02 марта 2012

добавление большего количества индексов сделает вставку медленнее, а не быстрее, но сделает выбор быстрее.

Можете ли вы перечислить полное определение таблицы?

...