Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Увеличение скорости выполнения процедуры (Виктор) 10/07/2010 - 12:43:33
      Re: Увеличение скорости выполнения процедуры (Виктор) 14/07/2010 - 09:36:55



From: Виктор - 10/07/2010 - 12:43:33
Subject:Увеличение скорости выполнения процедуры
-----------------
Есть табличка InnoDB, состоящая и 2-х столбцов ( var_num TINYINT - номер переменной, value SMALLINT - значение переменной). PRIMARY INDEX по var_num. Таблица содержит 128 записей.

Требуется с высокой частотой обновлять поле value всех строк таблицы.

Пытался из своей программы в цикле вызывать 128 запросов
update variables set value=X where var_num=Y;
Понял, что процесс занимает около 7 секунд, что не подходит.
Решил реализовать данную операцию в виде хранимой процедуры.

DELIMITER $$

DROP PROCEDURE IF EXISTS `mysqlalphabase`.`set_var` $$
CREATE PROCEDURE `mysqlalphabase`.`set_var` (in var0 int, in var1 int, in var2 int, in var3 int, in var4 int, in var5 int,
in var6 int, in var7 int, in var8 int, in var9 int, in var10 int, in var11 int, in var12 int, in var13 int, in var14 int,
in var15 int, in var16 int, in var17 int, in var18 int, in var19 int, in var20 int, in var21 int, in var22 int, in var23 int,
in var24 int, in var25 int, in var26 int, in var27 int, in var28 int, in var29 int, in var30 int, in var31 int, in var32 int,
in var33 int, in var34 int, in var35 int, in var36 int, in var37 int, in var38 int, in var39 int, in var40 int, in var41 int,
in var42 int, in var43 int, in var44 int, in var45 int, in var46 int, in var47 int, in var48 int, in var49 int, in var50 int,
in var51 int, in var52 int, in var53 int, in var54 int, in var55 int, in var56 int, in var57 int, in var58 int, in var59 int,
in var60 int, in var61 int, in var62 int, in var63 int, in var64 int, in var65 int, in var66 int, in var67 int, in var68 int,
in var69 int, in var70 int, in var71 int, in var72 int, in var73 int, in var74 int, in var75 int, in var76 int, in var77 int,
in var78 int, in var79 int, in var80 int, in var81 int, in var82 int, in var83 int, in var84 int, in var85 int, in var86 int,
in var87 int, in var88 int, in var89 int, in var90 int, in var91 int, in var92 int, in var93 int, in var94 int, in var95 int,
in var96 int, in var97 int, in var98 int, in var99 int, in var100 int, in var101 int, in var102 int, in var103 int, in var104 int,
in var105 int, in var106 int, in var107 int, in var108 int, in var109 int, in var110 int, in var111 int, in var112 int, in var113 int,
in var114 int, in var115 int, in var116 int, in var117 int, in var118 int, in var119 int, in var120 int, in var121 int, in var122 int,
in var123 int, in var124 int, in var125 int, in var126 int, in var127 int)
BEGIN
ALTER TABLE variables DISABLE KEYS;

update variables set value=var0 where var_num=0;
...
update variables set value=var127 where var_num=127;

ALTER TABLE variables ENABLE KEYS;
END $$

DELIMITER ;

Теперь процедура выполняется 5 секунд, т.е. все равно медленно.

Прошу помощи. Как быстро изменять все 128 записей таблицы?


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
37274



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |