6

我在 MySQL 中做了一个非常简单的过程(一个 while 循环):

BEGIN

    DECLARE start INT;
    DECLARE ending INT;

    SET start = 1;
    SET ending = 4000000;

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

在双核机器上这需要大约 26 秒(每个核心 100%),我不明白为什么。

你能给我一个答案吗?

4

1 回答 1

3

是的,与 C# 或 Java 等其他编程语言相比,存储过程非常慢。计算方面就是这样。同样的代码在 SQL Server 中也会很慢。可能比 MySQL 快,但您仍然需要等待几秒钟,直到它完全执行。你最好用一种编程语言来做这件事,它可以在一秒钟内完成这样的任务。

换句话说:

存储过程性能缓慢是在数据库中实现计算量大的业务逻辑通常不明智的原因之一。由于网络不再是它们曾经的瓶颈,因此通常最好将数据提取到应用程序层并用您选择的编程语言对其进行处理,即使这需要一些额外的数据库往返。

于 2012-09-28T11:42:39.910 回答