在Anorm中执行sql语句获得最佳性能的最佳做法是什么?
我想从我的数据库调用中获得最大的性能。
从数据库加载数据并尽快处理它(对象映射)的适当方法是什么?
我是否仍然使用Anorm或者我需要使用其他东西,可能是“本机”jdbc驱动程序?
更新 我使用 PostgreSQL 。
我的数据库包含“offices”表。
此表中存在 4行。
当我运行查询
时select
offices.*
from
offices
order by
offices.office__id
在PgAdmin中,执行时间 1-30 ms 。
因此,在Scala代码中,我创建了案例类Office :
case class Office(
id,
name,
phone,
address
)
另外,我创建了 OfficeDBO :
case class OfficeDBO(
id: Long,
name: String,
phone: String,
address: String
)
object OfficeDBO {
val Mapping = {
get[Long]("office__id") ~
get[String]("office__name") ~
get[String]("office__phone") ~
get[String]("office__address") map {
case officeId ~ officeName ~ officePhone ~ officeAddress => OfficeDBO(
officeId,
officeName,
officePhone,
officeAddress
)
}
}
def toOffice(officeDBO: OfficeDBO): Office = {
new Office(
officeDBO.id,
officeDBO.name,
officeDBO.phone,
officeDBO.address
)
}
}
并且,服务方法 OfficesService.findOffices():
def findOffices(): List[Office] = {
LOGGER.debug("Find offices")
DB.withConnection(implicit connection => {
SQL("""
select
offices.*
from
offices
order by
offices.office__id
""")
.as(OfficeDBO.Mapping *)
.map(toOffice)
})
}
方法 OfficesService.findOffices()执行 7秒!
问题出在哪里?如何重构获得最大性能的代码?