Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 哪种情况更有效?_C++_Database - Fatal编程技术网

C++ 哪种情况更有效?

C++ 哪种情况更有效?,c++,database,C++,Database,全部,, 我有一个数据库和一些数据。 我还有一个C++应用程序,它与DB通信。 哪种情况更有效 情景1: 用户点击“编辑数据”按钮 程序从数据库中读取数据并将其显示以供编辑 用户编辑数据并点击“保存”按钮 程序使用新保存的数据创建新对象,然后与旧对象进行比较 程序发出一些更新语句 情景2: 步骤1-3相同 程序用新数据覆盖旧对象数据 程序在一个事务中发出DELETE/INSERT语句 我倾向于说情景2。这是一个效率和事务处理合理的问题。删除现有对象以执行更新在事务上是不合理的。更新存在以更新数据

全部,, 我有一个数据库和一些数据。 我还有一个C++应用程序,它与DB通信。 哪种情况更有效

情景1:

  • 用户点击“编辑数据”按钮
  • 程序从数据库中读取数据并将其显示以供编辑
  • 用户编辑数据并点击“保存”按钮
  • 程序使用新保存的数据创建新对象,然后与旧对象进行比较
  • 程序发出一些更新语句
  • 情景2:

  • 步骤1-3相同
  • 程序用新数据覆盖旧对象数据
  • 程序在一个事务中发出DELETE/INSERT语句

  • 我倾向于说情景2。

    这是一个效率和事务处理合理的问题。删除现有对象以执行更新在事务上是不合理的。更新存在以更新数据库中的现有实体。如果使用合成关键点,则根本无法使用此方法

    在大多数系统中,refetch(至少检查您要提交的对象在从数据库请求后是否已被修改)是必需的


    第4步应该从数据库中读取、重新提取对象以确保其未更改,然后提交更新或回滚。

    我倾向于说选项1。但是没有一般的答案,你的问题中有太多的变数。获得答案的唯一方法是尝试这两种方法并计时。@john,你是从DB的角度说的,对吗?C++的观点是什么?有一些字符串、整数和向量。这取决于你所说的“更高效”是什么意思?更快?使用更少的内存?使用更少的其他资源?真正知道哪个更“有效”的唯一方法是测量!尝试两种方式,衡量你认为重要的东西,然后你就会知道。“Igor,如果整体效率不受数据库操作的支配,我会感到惊讶。”但是,时间是唯一能找到答案的方法。另一个需要考虑的问题是stackmonster所说的,update语句是为您正在做的事情而设计的。如果你选择第二个选项,那么一些后来的程序员会说“WTF,他们为什么这么做?”然后开始寻找原因。换句话说,保持简单,除非你们有明确的证据证明更复杂、不明显的路线有好处。stackmonster,用户不仅可以更改,还可以删除一些数据或添加新的。这是一个复杂的事务,我想安全地删除/插入。这不是一个“全新”的记录创建,也不是记录删除。可以在此处执行所有3个操作。数据主要存储在向量中,所以第二个用户对相同的数据有一个引用,你删除它,然后另一个用户回来更新它。但它不在那里。仅仅因为它看起来很复杂,并不意味着你可以忽略正确执行事务。