这段时间项目里遇到有这样一个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的效率之高喔。
分享到:
相关推荐
这种方式比标准 Update 语句更灵活,可以关联多个表,并且执行速度快。但是,表 B 的主键必须在 where 条件中,并且是以“=”来关联被更新表,否则将报错。 三、Merge 更新法 Merge 更新法是 Oracle 特有的语句,...
UPDATE 语句可以更新单个表或视图中的数据,也可以更新多个表或视图中的数据。 UPDATE 语句的基本语法结构如下: UPDATE { table_name | view_name | rowset_function_limited } SET { column_name = { expression...
MySQL UPDATE语句的用法详解 MySQL UPDATE语句是用于更新数据库表中...最后,需要注意的是,UPDATE语句可以用来更新单个表或多个表,具有灵活性和强大性。但是,需要小心地使用UPDATE语句,以免造成数据的丢失或错误。
这意味着管理员可以跨多个平台对服务器进行集中管理,而不仅仅是局限于单一的操作系统。了解这些操作系统的配置和运行对于成功使用HPSUM至关重要。 ### 知识点三:固件和软件更新的风险 更新固件和软件存在数据...
为了检验单个ID的有效性,可以通过NOD32_Update_Viewer链接到官方服务器进行验证: 1. **ESS家用版升级服务器** 2. **ESS商业版升级服务器** 3. **EAV家用版升级服务器** 4. **EAV商业版升级服务器** 如果ID能够...
这种方式允许我们根据需要灵活地插入多个参数。 为了防止SQL注入,应当避免直接将用户输入的字符串拼接到SQL语句中。例如,使用`%s`占位符配合`execute()`方法的参数列表传参,可以安全地处理动态参数。下面是一个...
- 多元组插入:一次插入多个元组,例如向SC表中插入三个课程记录。 - 查询结果插入:通过SELECT语句获取的结果插入到另一表中,如将SC表中每门课程的课程号、课程名和最高分存入C_MAX表。 - 表的插入:直接将一个表...
### Altium Designer中一个项目内多个原理图与多个PCB的一一对应方法 #### 背景介绍 在进行大规模电路板设计时,通常会遇到一个项目中包含多个原理图和多个PCB的情况。为了更好地组织和管理这些文件,Altium ...
2. 集中管理:SUM 允许用户集中管理多个服务器的更新,提高工作效率。 3. 自动化更新:SUM 可以自动地将固件和软件更新应用于服务器,无需用户干预。 4. 安全更新:SUM 通过导入浏览器安全证书,确保更新过程的...
总的来说,"update apk"是Android系统升级的重要组成部分,涉及到了系统构建、增量打包、签名验证、分发和安装等多个环节。虽然这个特定的案例可能存在问题,但它仍然是Android生态系统中不可或缺的一环,对于保持...
ESXi是VMware的超轻量级hypervisor,它直接运行在裸机硬件上,为虚拟化环境提供底层支持,允许在单个物理服务器上运行多个相互隔离的操作系统实例。 【压缩包子文件的文件名称列表】: 1. **index.xml** - 这个文件...
- **定义与作用**:批量更新是指一次性处理多个记录的更新操作,以减少对数据库的调用次数,从而提高程序执行效率。 - **应用场景**:适用于需要频繁更新大量数据的场景,如数据同步、数据分析等。 ##### 2.2 `...
Vmware Workstation是一款流行的桌面级虚拟化软件,它允许用户在单个主机上同时运行多个操作系统。在Linux系统中,通过Vmware,用户能够创建和管理虚拟机,进行软件测试、系统开发或者运行不同操作系统的应用程序。...
在Unity引擎中,脚本执行顺序是一个至关重要的概念,特别是在涉及多个游戏对象(GameObject)交互时。Unity5.3版本虽然较旧,但其脚本执行的原理在后续版本中依然适用,只是部分细节可能有所优化。理解并掌握这一...
在SQL中,更新操作通常是针对单个表进行的,但有时我们需要更新的数据涉及到多个相关联的表。这种情况下,我们可以通过多表关联更新来完成。本文将深入探讨如何使用SQL update语句进行多表关联更新,并提供实际的...
`bulk_create()`, `update()` 和数据库事务是优化性能的三个关键工具。本文将深入探讨它们之间的效率对比,并提供一些关于Django模型使用时需要注意的陷阱。 首先,我们来看`bulk_create()`方法。在上述例子中,...
- **结合其他语句**:`UPDATE`语句还可以与其他SQL语句结合使用,比如与`JOIN`一起使用来更新多个表中的数据。 #### 五、总结 `UPDATE`语句是非常强大的工具,可以帮助我们有效地管理数据库中的数据。通过对以上三...
这是因为数据窗口的更新属性只能针对单个表进行设置,无法同时设置多个表可更新。 ##### 限制 - 当数据窗口涉及多个表时,如果这些表之间存在主从关系(即一个表的数据依赖于另一个表的数据),则必须先更新从表再...
通过这些实例,我们可以看出`UPDATE`语句的强大之处,它允许我们灵活地修改数据库中的数据,无论是单个字段还是多个字段,只要合理使用`WHERE`条件,就能够精准地定位到需要更新的记录,从而高效地维护和管理数据。...