rec*_*cis 6 mysql time loops while-loop long-integer
我在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
Run Code Online (Sandbox Code Playgroud)
这在双核机器上需要大约26秒(每个核心100%),我不明白为什么.
你能给我一个答案吗?
是的,与 C# 或 Java 等其他编程语言相比,存储过程非常慢。计算方面就是如此。相同的代码在 SQL Server 中也会很慢。可能比 MySQL 快,但你仍然需要等待几秒钟,直到它完全执行。如果使用编程语言来完成这项工作,效果会更好,它可以在一秒钟内完成这样的任务。
\n\n换句话说:
\n\n存储过程性能缓慢是在数据库中实现计算成本高昂的业务逻辑通常不明智的原因之一。由于网络不再像以前那样成为瓶颈,因此通常最好将数据提取到应用程序层并用您选择的编程语言对其进行处理,即使这需要与数据库进行一些额外的往返。
\n