`
zfj.rails
  • 浏览: 46640 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

单个update与多个update的效率区别

阅读更多
这段时间项目里遇到有这样一个rake,所以就把它分享了。

valid_hotels_ids = [1, 2, 3, ...]
这是一个需要update的hotel表的id数组。

法一:逐一update
    valid_hotels_ids.each do |id|
      Hotel.update(id, "status = 'VALID'")
    end


统计了一下。四万条数据, 15分钟, 这效率低得。

法二:批量update
    valid_hotels_ids.each_index do |index|
      if index == valid_hotels_ids.length - 1
        Hotel.update_all("status = 'VALID'", "id in (#{valid_hotels_ids[(index-index%500)..index].join(',')})")
        break#这句要加上,不然当length为500的倍数时,下面这句也会被执行,造成重复update
      end

      if (index + 1) % 500 == 0
        Hotel.update_all("status = 'VALID'", "id in (#{valid_hotels_ids[index - 499..index].join(',')})")
      end
    end


统计了一下。同样是四万条数据,半分钟不到就OK了,可见批量update的效率之高喔。

分享到:
评论

相关推荐

    oracle的update的五种方式

    这种方式比标准 Update 语句更灵活,可以关联多个表,并且执行速度快。但是,表 B 的主键必须在 where 条件中,并且是以“=”来关联被更新表,否则将报错。 三、Merge 更新法 Merge 更新法是 Oracle 特有的语句,...

    sql的update语句功能非常强大[参考].pdf

    UPDATE 语句可以更新单个表或视图中的数据,也可以更新多个表或视图中的数据。 UPDATE 语句的基本语法结构如下: UPDATE { table_name | view_name | rowset_function_limited } SET { column_name = { expression...

    mysql update语句的用法详解.doc

    MySQL UPDATE语句的用法详解 MySQL UPDATE语句是用于更新数据库表中...最后,需要注意的是,UPDATE语句可以用来更新单个表或多个表,具有灵活性和强大性。但是,需要小心地使用UPDATE语句,以免造成数据的丢失或错误。

    HP Smart Update Manager 用户指南7.4.0版

    这意味着管理员可以跨多个平台对服务器进行集中管理,而不仅仅是局限于单一的操作系统。了解这些操作系统的配置和运行对于成功使用HPSUM至关重要。 ### 知识点三:固件和软件更新的风险 更新固件和软件存在数据...

    NOD32_Update_Viewer 详细教程

    为了检验单个ID的有效性,可以通过NOD32_Update_Viewer链接到官方服务器进行验证: 1. **ESS家用版升级服务器** 2. **ESS商业版升级服务器** 3. **EAV家用版升级服务器** 4. **EAV商业版升级服务器** 如果ID能够...

    pyMySQL SQL语句传参问题,单个参数或多个参数说明

    这种方式允许我们根据需要灵活地插入多个参数。 为了防止SQL注入,应当避免直接将用户输入的字符串拼接到SQL语句中。例如,使用`%s`占位符配合`execute()`方法的参数列表传参,可以安全地处理动态参数。下面是一个...

    DML练习:UPDATE,DELETE,INSERT操作 数据库实验报告

    - 多元组插入:一次插入多个元组,例如向SC表中插入三个课程记录。 - 查询结果插入:通过SELECT语句获取的结果插入到另一表中,如将SC表中每门课程的课程号、课程名和最高分存入C_MAX表。 - 表的插入:直接将一个表...

    Altium-Desiger一个项目中多个原理图和多个PCB一一对应的方法

    ### Altium Designer中一个项目内多个原理图与多个PCB的一一对应方法 #### 背景介绍 在进行大规模电路板设计时,通常会遇到一个项目中包含多个原理图和多个PCB的情况。为了更好地组织和管理这些文件,Altium ...

    HPE_a00018261zh_cn_Smart Update Manager 入门指南.pdf

    2. 集中管理:SUM 允许用户集中管理多个服务器的更新,提高工作效率。 3. 自动化更新:SUM 可以自动地将固件和软件更新应用于服务器,无需用户干预。 4. 安全更新:SUM 通过导入浏览器安全证书,确保更新过程的...

    update apk

    总的来说,"update apk"是Android系统升级的重要组成部分,涉及到了系统构建、增量打包、签名验证、分发和安装等多个环节。虽然这个特定的案例可能存在问题,但它仍然是Android生态系统中不可或缺的一环,对于保持...

    VMware-VMvisor-Installer-6.7.0.update03-20497097.x86-64-DellEMC

    ESXi是VMware的超轻量级hypervisor,它直接运行在裸机硬件上,为虚拟化环境提供底层支持,允许在单个物理服务器上运行多个相互隔离的操作系统实例。 【压缩包子文件的文件名称列表】: 1. **index.xml** - 这个文件...

    SqlDataAdapter.Update批量更新.txt

    - **定义与作用**:批量更新是指一次性处理多个记录的更新操作,以减少对数据库的调用次数,从而提高程序执行效率。 - **应用场景**:适用于需要频繁更新大量数据的场景,如数据同步、数据分析等。 ##### 2.2 `...

    vmware-any-any-update115 Vmware在Linux中的补丁

    Vmware Workstation是一款流行的桌面级虚拟化软件,它允许用户在单个主机上同时运行多个操作系统。在Linux系统中,通过Vmware,用户能够创建和管理虚拟机,进行软件测试、系统开发或者运行不同操作系统的应用程序。...

    unity多个物体间的脚本执行顺序

    在Unity引擎中,脚本执行顺序是一个至关重要的概念,特别是在涉及多个游戏对象(GameObject)交互时。Unity5.3版本虽然较旧,但其脚本执行的原理在后续版本中依然适用,只是部分细节可能有所优化。理解并掌握这一...

    SQL update 多表关联更新的实现代码

    在SQL中,更新操作通常是针对单个表进行的,但有时我们需要更新的数据涉及到多个相关联的表。这种情况下,我们可以通过多表关联更新来完成。本文将深入探讨如何使用SQL update语句进行多表关联更新,并提供实际的...

    Django bulk_create()、update()与数据库事务的效率对比分析

    `bulk_create()`, `update()` 和数据库事务是优化性能的三个关键工具。本文将深入探讨它们之间的效率对比,并提供一些关于Django模型使用时需要注意的陷阱。 首先,我们来看`bulk_create()`方法。在上述例子中,...

    SQL语句中UPDATE的三种用法.docx

    - **结合其他语句**:`UPDATE`语句还可以与其他SQL语句结合使用,比如与`JOIN`一起使用来更新多个表中的数据。 #### 五、总结 `UPDATE`语句是非常强大的工具,可以帮助我们有效地管理数据库中的数据。通过对以上三...

    pb数据窗口更新多个数据库表

    这是因为数据窗口的更新属性只能针对单个表进行设置,无法同时设置多个表可更新。 ##### 限制 - 当数据窗口涉及多个表时,如果这些表之间存在主从关系(即一个表的数据依赖于另一个表的数据),则必须先更新从表再...

    sql update

    通过这些实例,我们可以看出`UPDATE`语句的强大之处,它允许我们灵活地修改数据库中的数据,无论是单个字段还是多个字段,只要合理使用`WHERE`条件,就能够精准地定位到需要更新的记录,从而高效地维护和管理数据。...

Global site tag (gtag.js) - Google Analytics