mysql - 在光滑的操作中使用 scala 集合等价物是否有害?

标签 mysql database scala collections slick

我的数据库中有表 table_atable_b,它们通过 TableQuery 对象进行了平滑映射。我需要将一组受限数据从 table_a 复制到 table_b

设表查询对象为tableQueryAtableQueryB。过滤和复制数据的逻辑很复杂。所以 我想在 forield 中做相当于表查询对象的 scala 集合,并将它们视为普通集合。但一切都发生在一笔交易中。代码看起来像这样。

for {
    collA <- tableQueryA.filter(.....something....).result
    collB <- tableQueryB.filter(.....somethingElse.....).result
    ...... do something with collA and collB
    }
 yield ...something

这样做有什么害处吗?即作为 scala 集合进行处理并处理它们? 我使用的是 slick 3.2

最佳答案

通过执行两个单独的tableQueryX.filter().result,您将对数据库执行两个单独的查询。您可以将其替换为连接两个表的一个查询。

很难说哪种方法在性能方面更好,因为它取决于 filterwhere 子句的数量以及数据库使用的索引类型来实现这些。如果您需要一流的性能,请尝试这两种方法并选择最快的一种。

如果您的两个查询都产生大量数据,您还需要考虑应用程序的内存使用情况,因为所有数据都在使用 scala 收集 api 之前加载。

关于mysql - 在光滑的操作中使用 scala 集合等价物是否有害?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54801610/

相关文章:

php - 如何从 PHP 调用 MySQL 交互式客户端?

mysql - "How to query this in mysql? I am getting nowhere."

ios - NSPredicate 搜索出现 NSDate 错误

scala - Spark scala 运行

scala - SQLContext 隐式

mysql - 购物车库存返回查询

mysql - 记录未出现在 View 中,但出现在 View 查询结果中

python - 在 python 2.7 中,信息不会从 twitter 写入文本文件

python - django admin 中用户定义的文本字段

scala - 使用 JobTest 类在 Hadoop 中运行 Scalding 测试作业