这是我的光滑代码:
val map = Query(Messages)
.filter(_.msg_id === msg_id)
.map(ab => ab.completed_at ~ ab.status ~ ab.total_count ~ ab.accept_count ~ ab.fail_count ~ ab.status_list)
map.update((Option(completed_at), Option(status), Option(sendcount), Option(acceptcount), Option(failcount), Option(task_id + ":" + "%s".format(status))))
我发现此更新需要超过200毫秒而且非常不正常, 更新代码有什么问题吗? 有人可以将光滑的更新代码翻译成真正的SQL,以便我可以检查效率〜
答案 0 :(得分:1)
您应该能够使用以下命令获取查询的SQL语句:
map.updateStatement
关于查询的时间,您是否使用连接池?如果是这种情况,您可以在运行查询时看到更长的延迟,因为光滑是在每个db.withSession语句上建立连接。如果您使用连接池,它将在第一个语句上连接,然后为下一个语句重用连接(大大减少每个查询的时间)。
如果您想尝试这个,请查看c3p0,它与光滑兼容,只需按如下方式定义您的数据库:
val db = {
val ds = new ComboPooledDataSource
ds.setDriverClass(...)
ds.setJdbcUrl(...)
ds.setMinPoolSize(...)
ds.setAcquireIncrement(...)
ds.setMaxPoolSize(...)
ds.setUser(...)
ds.setPassword(...)
Database.forDataSource(ds)
}
请查看c3p0文档,了解有关各种设置的详细信息,您可以调整这些设置以获得更好的效果。