database - 游标与重复代码/逻辑

标签 database database-design stored-procedures cursors

我听说使用游标不好,因为它们对于 DBMS 来说“不自然”并且性能很差。
但想象一下以下情况:我有一个存储过程,我需要为来自法国的每个客户调用该存储过程(例如)。我有几个选项,例如使用游标、在一个查询中写入所有内容并从客户端应用程序为每个客户调用存储过程。
如果我在一个查询中写入所有内容 - 它很可能会重复现有存储过程中的代码/逻辑/整个查询。对我来说,这看起来像是一种“臭方法”(如果你读过《重构》一书)。逻辑不再封装在一处。

你觉得怎么样?

PS。欢迎链接到任何描述光标为何不好或不错的文档。

最佳答案

如果您致力于在数据库上采用存储过程形式的业务逻辑,那么游标也不错。

假设您有一个非常标准的客户端-服务器-数据库架构,那么将逻辑从数据库移到应用程序服务器中可能是一个更好的主意。这有几个好处:

  1. 更好的可扩展性。添加应用程序服务器比添加数据库服务器更容易/更便宜。
  2. 集中业务逻辑。业务逻辑遍布各处的应用程序更难维护。

关于database - 游标与重复代码/逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1089700/

相关文章:

php - 通过循环遍历 mySQL 数据库创建数组,在 PHP 中仅捕获一次条目

nhibernate - 数据库和 O/RM 中的枚举

mysql - ON DELETE CASCADE 的反向

mysql - 检查存储过程中的 var 是否为 NULL

PHP 读取文件与 MySql 查询

php - 如何使用 php 检查 mysql 是否有重复项

stored-procedures - 访问存储过程输出参数时出现间歇性空引用错误

sql - 将复合类型的数组传递给存储过程

mysql - 在 MySQL 表中存储历史价目表的最佳方式是什么?

mysql - 如何实现2到n个关系表