gpt4 book ai didi

scala - 在 Slick 中一次和多次调用 `run.db` 有什么不同吗

转载 作者:行者123 更新时间:2023-12-04 17:11:40 25 4
gpt4 key购买 nike

调用一次run.db有什么区别吗:

val dbAction3 = for {
res1 <- dbAction1
res2 <- dbAction2(res1)
} yield res2

val res3 = db.run(dbAction3)

多次:

val res3 = for {
res1 <- db.run(dbAction1)
res2 <- db.run(dbAction2(res1))
} yield res2

据我所知,除非我们在第一个中使用transactionally,否则没有区别。

最佳答案

两者的可观察效果是一样的,只是执​​行方式不同。第一个版本创建一个传递给数据库的查询,而第二个版本创建两个单独的数据库查询。

如果两个操作之间有任何共同点,第一个版本会提供更大的优化潜力。 (例如,如果两个操作使用相同的表/ View )。一个好的数据库可能能够以单独查询无法实现的方式组合或重新排序操作以提高效率。

第二个版本会产生两个数据库操作的开销,并使用 Future 机制来序列化它们,而不是内部数据库机制,因此效率可能较低。

第一个版本没有缺点,而且执行效率可能更高,因此这是“更好”的选择。但它确实取决于特定的数据库实现,因此可能存在第二个版本更快的情况。

关于scala - 在 Slick 中一次和多次调用 `run.db` 有什么不同吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69311327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com