Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Velocidad de procedimiento

Estas en el tema de Velocidad de procedimiento en el foro de Mysql en Foros del Web. Hola, tengo un procedimiento al que le cuesta una barbaridad ejecutarse y no tengo idea de porque ya que creo tener los índices correctos, el ...
  #1 (permalink)  
Antiguo 29/12/2008, 10:57
 
Fecha de Ingreso: noviembre-2007
Mensajes: 163
Antigüedad: 16 años, 5 meses
Puntos: 0
Velocidad de procedimiento

Hola, tengo un procedimiento al que le cuesta una barbaridad ejecutarse y no tengo idea de porque ya que creo tener los índices correctos, el código es el siguiente:

DELIMITER $$

DROP PROCEDURE IF EXISTS `ASIGNA_POS_MR` $$
CREATE PROCEDURE `ASIGNA_POS_MR` ()
BEGIN
DECLARE done INT DEFAULT 0;
declare pos INT;
declare id INT;
DECLARE cur1 CURSOR FOR select @rownum:=@rownum+1 rownum, t.idjug
from jugador t, (SELECT @rownum:=0) r
order by t.mr desc;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

update jugador set pos_mr = 0;
commit;

open cur1;

REPEAT
FETCH cur1 INTO pos, id;
update jugador set pos_mr = pos where idjug = id;
commit; (el commit lo he metido aqui para ver en 1 minuto cuantos hace, pero poneidno fuera del repeat-until, donde deberá ir, la velocidad es igual de baja)
UNTIL done END REPEAT;

CLOSE cur1;


END $$

DELIMITER ;

La tabla jugador tiene 80.000 registros. idjug es clave primaria y uno de los índices que tiene la tabla es sobre mr.

La cuestión es que en 1 minuto no hace nada mas que 200 registros y no veo el porque, cualquier idea sería bienvenida
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:13.