在 SQL 中,UPDATE 总是比 DELETE+INSERT 快吗?

2024-02-21

假设我有一个简单的表,其中包含以下字段:

  1. ID:int、自增(身份)、主键
  2. 名称:varchar(50),唯一,有唯一索引
  3. Tag: int

我从不使用 ID 字段进行查找,因为我的应用程序始终基于使用 Name 字段。

我需要不时更改标签值。我正在使用以下简单的 SQL 代码:

UPDATE Table SET Tag = XX WHERE Name = YY;

我想知道是否有人知道上面是否总是比以下更快:

DELETE FROM Table WHERE Name = YY;
INSERT INTO Table (Name, Tag) VALUES (YY, XX);

再次 - 我知道在第二个示例中 ID 已更改,但这对我的应用程序来说并不重要。


这个答案有点晚了,但由于我遇到了类似的问题,我在同一台机器上使用 JMeter 和 MySQL 服务器进行了测试,我在其中使用了:

  1. 包含两个 JDBC 请求的事务控制器(生成父示例):删除和插入语句
  2. 包含 Update 语句的单独 JDBC 请求。

经过500次循环的测试,我得到了以下结果:

DEL + INSERT - 平均:62ms

更新 - 平均:30ms

Results: Results

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 SQL 中,UPDATE 总是比 DELETE+INSERT 快吗? 的相关文章

随机推荐

  • 在Mac OS上使用GCC为MS-DOS编译C程序(DOSBox)

    我在Mac OS X上的Snow Leopard下运行GCC 4 2 1 我想用它来编译我15年前写的一些旧的C C DOS游戏 以便我可以在下面运行它们DosBox http www dosbox com 为此 它们显然需要编译为 DOS
  • 两个列表,Python 中的比较速度更快

    我正在编写 python 2 7 脚本来比较两个列表 这些列表是通过读取文件内容从文件创建的 文件只是文本文件 没有二进制文件 文件 1 仅包含哈希值 某些明文单词的 MD5 和 文件 2 是 hash plain 列表具有不同的长度 从逻
  • Git 丢失更改[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 今天在使用 Git 的时候遇到了一些问题 我真的无法理解 我们的团队有一个私人 github 存储库 我从该共享存储库中提取了一些更改 完成
  • F# 中的受歧视联盟是什么以及 OOP 中我们有什么类型的替代方案

    我正在从 C 开始学习函数式编程 当然 由于我对 C 有着深入而详细的了解 我选择了我的第一个函数式语言 F 并尝试投入时间来学习它 现在我需要了解什么是受歧视的工会为什么它很重要以及为什么我们真正需要它 我确实做了很多研究 但导师 讲师
  • float() 的文字无效:0.000001,如何修复错误?

    我有一个包含 3 列数据的 csv 文件 我需要创建一个新的输出文件 其中包含原始文件第一列和第三列中的一组特定数据 第三列包含十进制值 我相信在这种情况下我已经使用了 python 的 float 功能 我尝试过以下代码 in file
  • 图神经网络中的梯度爆炸问题

    我有一个梯度爆炸问题 尝试了几天后仍无法解决 我在 TensorFlow 中实现了一个自定义消息传递图神经网络 用于根据图数据预测连续值 每个图表都与一个目标值相关联 图的每个节点由节点属性向量表示 节点之间的边由边属性向量表示 在消息传递
  • 存储后端如何影响 Datomic?

    我该如何选择 Datomic 的后端存储服务 选择 DynamoDB 而不是 Postgres 是一个偏好问题 还是每个选项都有不同的权衡 如果有 它们是什么 存储服务要求 Datomic 的存储服务一般应满足 3 个要求 实施键值存储语义
  • 如何计算三次贝塞尔曲线的控制点

    在执行三次贝塞尔曲线程序时我发现它使用端点为 10 10 0 和 0 1 0 其他控制点为 5 10 2 和 10 5 2 我不能了解他们是如何获得其他控制点的请帮我找到它们的任何公式或方法 Edit 如果你想让贝塞尔曲线平滑地通过N个点且
  • 构建 Cython 模块时如何覆盖 -DNDEBUG 编译标志

    我有一个 Cython 模块 通过调用 C 函数cdef extern C 函数有assert 声明 我想核实这些说法 但是 当我通过调用创建模块时python setup py build ext inplace GCC 总是被调用 DN
  • 背景:颜色在 IE8 中不起作用

    body background gray font family sans serif width 960px margin auto header background green border 10px solid black nav
  • 单词标记化与传统词形还原?

    我正在研究 NLP 预处理 在某些时候 我想实现一个上下文相关的词嵌入 作为辨别词义的一种方式 并且我正在考虑使用 BERT 的输出来实现这一点 我注意到 BERT 使用 WordPiece 标记化 例如 playing gt play i
  • Windows 7 64 位的 Moto G USB 调试问题

    我尝试搜索是否有任何建议 但找不到足够的建议 因此这个问题可以帮助我 我已经安装了 Motorola USB 驱动程序并启用了 USB 调试模式以及启用了 MTP 该设备在 Eclipse 中显示为可用状态不到一分钟 然后返回离线模式 我尝
  • iOS 应用内购买上的收据验证返回多笔交易

    沙盒模式下的应用内购买会返回同一产品 ID 上的多个交易 使用语言 Swift 4 0 func validateAppReceipt receipt Data let base64encodedReceipt receipt base64
  • 在 NativeScript 应用程序中与 TextField 交互时停止键盘覆盖

    使用用户可以输入输入的 NativeScript 应用程序视图时 本机应用程序键盘输入会覆盖TextField成分 虽然这不会阻止用户输入文本 但它会扰乱用户体验流程 并且从 UI 角度来看看起来很糟糕 如何让键盘不覆盖输入 而是像其他本机
  • SQL Server - 将变量传递给存储过程时遇到问题

    我知道这是一个基本问题 但我无法找到完成此任务的正确方法 我需要将变量传递给 SQL Server 2008 存储过程并返回查询 这是存储过程 CREATE PROCEDURE pOrders AS DECLARE enteredClien
  • 我可以在 Struts 中提供 SEO 友好的 url 吗?

    我想在我的应用程序中拥有 SEO 友好的 url 它将使用 Struts 1 2 在 java j2ee 中构建 我有一些分类如下 county countryname county state statename county state
  • PHP 如何发送原始 HTTP 数据包

    我想将原始 http 数据包发送到网络服务器并接收其响应 但我找不到方法来做到这一点 我对套接字缺乏经验 我发现的每个链接都使用套接字发送 udp 数据包 任何帮助都会很棒 看一下这个简单的例子fsockopen手册页 http docs
  • 动画元素替换[重复]

    这个问题在这里已经有答案了 请告诉我如何使容器根据子元素的高度平滑地增加和减少高度 我的代码可以在没有动画的情况下工作 setTimeout gt document getElementById page1 style display no
  • Selendroid 作为网络抓取工具

    我打算创建一个 Android 应用程序 该应用程序执行无头登录到网站 然后从后续页面中抓取一些内容 同时维护登录会话 我第一次使用HtmlUnit http htmlunit sourceforge net 在一个普通的 Java 项目中
  • 在 SQL 中,UPDATE 总是比 DELETE+INSERT 快吗?

    假设我有一个简单的表 其中包含以下字段 ID int 自增 身份 主键 名称 varchar 50 唯一 有唯一索引 Tag int 我从不使用 ID 字段进行查找 因为我的应用程序始终基于使用 Name 字段 我需要不时更改标签值 我正在