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