Slick 3.0 避免多重选择
Slick 3.0 avoid multiple selects
我有一个 Long 集合,对于集合中的每个元素,我必须在数据库中查找 table 并执行 select。这种方法的问题是它只发出那么多 select 并且每次打开一个新连接并且当我多次调用这个方法时,连接池很快就会耗尽!
val allIds = Seq(1,2,3,4....)
对于 allIds 中的每个 ID,我做的是:
db.run(fetchTableRowFromDb(_))
有没有更好的方法来避免给出这么多 select 语句?
您可以使用批量提取。假设你的 table class 名字是 "SampleTable" 并且 table 名字是 "sampletable".
val allIds = Seq(1,2,3,4....)
val query = TableQuery[SampleTable].filter(_.id inSet(allIds.toTraversable))
db.run(query)
以上查询类似于
select * from sampletable where id in (1,2,3....);
我有一个 Long 集合,对于集合中的每个元素,我必须在数据库中查找 table 并执行 select。这种方法的问题是它只发出那么多 select 并且每次打开一个新连接并且当我多次调用这个方法时,连接池很快就会耗尽!
val allIds = Seq(1,2,3,4....)
对于 allIds 中的每个 ID,我做的是:
db.run(fetchTableRowFromDb(_))
有没有更好的方法来避免给出这么多 select 语句?
您可以使用批量提取。假设你的 table class 名字是 "SampleTable" 并且 table 名字是 "sampletable".
val allIds = Seq(1,2,3,4....)
val query = TableQuery[SampleTable].filter(_.id inSet(allIds.toTraversable))
db.run(query)
以上查询类似于
select * from sampletable where id in (1,2,3....);