2012-09-28 74 views
6

I hizo un procedimiento muy simple (un bucle while) en MySQL:MySQL bucle muy lento

BEGIN 

    DECLARE start INT; 
    DECLARE ending INT; 

    SET start = 1; 
    SET ending = 4000000; 

    WHILE (start <= ending) DO 
     SET start = start + 1; 
    END WHILE; 
END 

Esto toma ~ 26 segundos en una máquina de doble núcleo (cada núcleo en el 100%) y no hacer entender porqué.

¿Me podría dar una respuesta?

+1

SQL no es un lenguaje de programación donde el bucle es muy rápido. –

+0

@juergen d: no es "_no muy rápido_", es lento como el infierno ... Es ** 8-9 MIL ** veces más lento que un ciclo promedio mientras. – recis

Respuesta

3

Sí, los procedimientos almacenados son muy lentos en comparación con otros lenguajes de programación como C# o Java. Computacional sabio eso es. El mismo código también sería lento en SQL Server. Probablemente más rápido que MySQL, pero aún esperarías unos segundos hasta que se haya ejecutado por completo. Lo mejor será hacerlo en un lenguaje de programación, que completa esa tarea en menos de un segundo.

Así que con otras palabras:

lenta la ejecución del procedimiento almacenado es una de las razones por las que por lo general no es aconsejable aplicar la lógica de negocio computacionalmente caro de la base de datos. Como las redes no fueron el cuello de botella que alguna vez tuvieron, a menudo es mejor extraer los datos a la capa de aplicación y procesarlos en el lenguaje de programación que elijas, incluso si eso lleva algunos viajes adicionales a la base de datos.