我一直听到人们对使用游标说不好,尤其是在 Microsoft SQL Server 中,因为它们非常慢。
MySQL 上的 Cursors 也是这种情况吗?MySQL 中的游标是否也会降低性能?有人可以就 MySQL 中游标的使用提出建议吗?
我一直听到人们对使用游标说不好,尤其是在 Microsoft SQL Server 中,因为它们非常慢。
MySQL 上的 Cursors 也是这种情况吗?MySQL 中的游标是否也会降低性能?有人可以就 MySQL 中游标的使用提出建议吗?
大多数现代数据库(包括 MySQL)旨在执行基于集合的操作。游标的问题在于它们执行基于行(或过程)的操作。因此,当您在现代 DBMS 上使用游标执行一项无需游标即可完成的工作时,您几乎总是会看到性能下降。
看看这篇文章,它在这两者上做得不错。它是在考虑 SQL Server 的情况下编写的,但大多数概念都适用。
只需创建并填写一个临时表。这就是大多数 RDBMS 实现游标的方式。
游标本质上是迭代的 - 无论任何数据库类型,它们肯定会变慢。因此,您应该尽一切努力避免它们并尝试使用 SQL 查询找到解决方案。然而,它们存在于无法通过查询解决的问题 - 所以只有在绝对必要时才使用它们。