得到警告:
重新准备已准备好的查询通常是一种反模式,可能会影响性能 . 考虑只准备一次声明 .
我看到了各种类似的问题,例如Datastax: Re-preparing already prepared query warning,但它们没有解决重新分配查询使用的键空间或表的问题 .
我通常可以重用查询,但它需要为每个键空间和表缓存它,我不想管理状态 . 或者,我可以在执行查询之前重新绑定键空间和表(然后不需要重新创建):
//我正在使用的插入查询
def insertQuery(keyspace: String, table: String): Insert = QueryBuilder.insertInto(keyspace, table)
.value("c1", QueryBuilder.bindMarker())
.value("c2")
.value(...)
.value("c_n")
需要这样的东西:
QueryBuilder.insertInto(keyspace = ???BIND MARKER????, table = ???BIND MARKER???)
1 回答
你不能绑定键空间和表名...
如果您不需要使用它们 - 只需生成
SimpleStatement
- 它会更有效,因为现在如果您准备好每个请求,那么您正在进行2次网络往返 - 一次用于准备查询,另一次用于执行 .但我建议在启动/第一次连接时准备所有必要的查询,因为它们可以带来非常显着的性能提升(当然,如果你在意的话) .