使用Sequel可以在单个呼叫中进行多次更新吗?例如,在我的服务器上进行大约200次更新可能需要几分钟的时间,但是如果我伪造一个SQL查询,它将在几秒钟内运行。我想知道Sequel是否可以用来伪造这个SQL查询,甚至更好,整个操作本身就是一个镜头。是否有可能在Sequel中批量更新?
回答
我遇到的解决方案涉及update_sql方法。它不是执行操作本身,而是输出原始SQL查询。要批量多个更新,只需将它们加入;在两者之间,使用结果字符串调用run方法,并且全部设置完成。
批处理解决方案比多个更新更快。
这个解决方案只比'多个更新'更快,因为你只为整个更新集合建立一个实际的连接/访问数据库,而不是每个更新。请注意,有些框架会自动执行这种行为 - 它们会在内存中保存更新,直到事务提交。此外,如果可以将多个语句重新写入_one_语句,您可能会获得更大的收益。 –
这可能适用于您的情况,但并非所有Sequel适配器都支持Database#run中的多个查询。续集实际上并没有提供一个独立于适配器的方法,它接受单个字符串中的多个查询(一些适配器可以处理这样的字符串,而另一些则不能)。 –
对于mysql2驱动程序,连接时必须使用{flags::: Mysql2 :: Client :: MULTI_STATEMENTS}作为选项 – tothemario
可以使用Datset#import
http://sequel.jeremyevans.net/rdoc/classes/Sequel/Dataset.html#method-i-import “插入多个记录到相关联的表中。该方法可用于有效地插入大量记录到表在单个查询数据库是否支持它。插页自动包裹在交易“。
这里有一个如何使用它的例子:
DB = Sequel.connect(...)
DB[:movies].import([:id, :director, :title, :year], [[1, "Orson Welles", "Citizen Kane", 1941],[2, "Robert Wiene", "Cabinet of Dr. Caligari, The", 1920]])
Dataset#update
不为你工作?
http://sequel.jeremyevans.net/rdoc/classes/Sequel/Dataset.html#method-i-update
- 1. 是否有可能在MongoDB中进行原子批量更新?
- 2. 使用Sequel gem批量更新
- 3. 是否有可能批量更新多个iPhone应用程序?
- 4. 是否有可能在Sequel中执行自我加入?
- 5. 是否有可能通过查询使用elasticsearch中的批量api更新
- 6. 如何在批量更新中使用Sequel Gem返回更新的记录
- 7. PHP PDO批量更新 - 是否存在?
- 8. 使用新的核心数据批量更新,是否可以批量删除?
- 9. 是否有可能在变量中更改变量的值?
- 10. Rails中是否有类似批量更新的内容?
- 11. 是否有可能在Java中批量初始化常规变量?
- 12. 是否可以在Linq 2 Sql中批量或批量插入?
- 13. 是否有可能使用javascript更新jinja2模板变量?
- 14. 在ActiveRecord中有效地批量更新?
- 15. 在querydsl中使用JPAUpdateClause批量更新的任何可能性?
- 16. 是否有可能在“while”循环中更改变量的值?
- 17. 是否有可能在RPG Maker XP中更新Ruby版本
- 18. 是否有可能更新然后在mysql中插入?
- 19. 是否有可能在jdbccursoritemreader数据库中更新
- 20. 是否有可能在NHibernate中插入后禁止更新?
- 21. 是否有可能在代码中更新WP7锁定屏幕?
- 22. 是否有可能在android中运行时更新string.xml文件?
- 23. 是否有可能在ajax更新后重新生成分页?
- 24. 是否有可能设置过期到redis键(批量操作)
- 25. 是否有可能使用宏将csv批量转换为xls?
- 26. 是否有可能执行批量上传到亚马逊s3?
- 27. 是否有可能在1个sql更新语句中更新3个sql行
- 28. 是否有可能更新java中的if else语句中的变量
- 29. 核心数据中的所有实体是否存在批量更新操作?
- 30. 是否有可能通过Sequel中的非选择列进行排序?
是的,但它取决于你试图做什么,以及什么RDBMS你正在运行的。请提供更多信息,以便我们能够更好地为您提供建议。 –
我正在使用PostgreSQL,并且我希望Sequel针对多个更新发出单个查询,因为我可以在普通SQL中执行此查询。 – RooSoft