MySQL 非常慢的循环

Posted

技术标签:

【中文标题】MySQL 非常慢的循环【英文标题】:MySQL very slow loop 【发布时间】:2012-09-20 06:15:06 【问题描述】:

我在 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% 上),我不明白为什么。

你能给我一个答案吗?

【问题讨论】:

SQL 不是循环非常快的编程语言。 @juergen d:它不是“不是很快”,它慢得像地狱......它比它慢 8-9 THOUSAND 倍一个平均的 while 循环。 【参考方案1】:

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

换句话说:

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

【讨论】:

以上是关于MySQL 非常慢的循环的主要内容,如果未能解决你的问题,请参考以下文章

你将如何优化这个简短但非常慢的 Python 循环?

matlab处理循环特别慢的问题

加快python中的numpy循环?

MySQL基础知识

非常慢的 MySQL 读取性能

如何优化这个非常慢的 MySQL 查询?