2012-09-28 115 views
6

我提出在MySQL一個非常簡單的程序(while循環):MySQL的非常慢環

BEGIN 

    DECLARE start INT; 
    DECLARE ending INT; 

    SET start = 1; 
    SET ending = 4000000; 

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

這需要〜雙核機(100%每個芯)26秒,我不理解爲什麼。

你能給我一個答案嗎?

+1

SQL是循環非常快的編程語言。 –

+0

@juergen d:它不是「非常快」,它像地獄一樣慢......它比平均while循環慢了8-9,000倍。 – recis

回答

3

是的,與其他編程語言(如C#或Java)相比,存儲過程非常緩慢。計算明智的是。相同的代碼在SQL Server中也會很慢。可能比MySQL快,但你仍然會等待幾秒鐘,直到它完全執行。用一種編程語言來完成這項工作會更好,這種編程語言在一秒鐘內完成了這樣的任務。

所以與其他詞:

慢速存儲過程的性能也是它通常是不明智的在數據庫中實現計算昂貴的商業邏輯的原因之一。由於網絡不是他們曾經遇到的瓶頸,因此將數據提取到應用程序層並使用您選擇的編程語言處理數據通常會更好,即使這需要額外往返數據庫。