MySQL 上的游标 - 好还是坏

发布于 2024-11-28 20:04:27 字数 1431 浏览 0 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

り繁华旳梦境 2024-12-05 20:04:27

大多数现代数据库(包括 MySQL)都被设计为执行基于集合的操作。游标的问题在于它们执行基于行(或过程)的操作。因此,当您使用游标执行在现代 DBMS 上无需游标即可完成的工作时,您几乎总是会看到性能下降。

看一下这篇文章,它对这两者做了很好的研究。它是根据 SQL Server 编写的,但大多数概念都适用。

Most modern databases (including MySQL) are designed to perform set based operations. The problem with cursors is that they perform row based (or procedural) operations. Because of this you will almost always see a performance hits when you are using cursors to do a job that can be done without cursors on a modern DBMS.

Take a look at this article, which does a decent job going over the two. It is written with SQL Server in mind but most of the concepts apply.

烦人精 2024-12-05 20:04:27

只需创建并填充一个临时表。这就是大多数 RDBMS 实现游标的方式。

Just create and fill a temporary table. That is how most RDBMS's implement cursors anyway.

‘画卷フ 2024-12-05 20:04:27

游标本质上是迭代的 - 无论任何数据库类型,它们肯定会变慢。因此,您应该尽一切努力避免它们并尝试使用 SQL 查询找到解决方案。然而,它们用于解决无法通过查询解决的问题 - 因此仅在绝对必要时才使用它们。

Cursors by nature are Iterative - they are definitely going to be slower irrespective of any database type. You should therefore do whatever to avoid them and try to find solutions using SQL queries. They are however there for problems which cannot be solved with queries - so use them only when absolutely necessary.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文