私はそれぞれSimpleStatementとBoundStatementを使ってCassandraのデータを100回選択します。
BoundStatementがあまり改善していないことがわかりました。BoundStatementはCassandraのSimpleStatementよりも効率的ですか?
しかし、this linkは言う:
SimpleStatement:文字列から直接構築された単純な実装を。通常、1回または数回だけ実行される照会に使用されます。
BoundStatement:準備されたステートメントに値をバインドして取得します。通常、異なる値で頻繁に実行される照会に使用されます。
私の場合、なぜSimpleStatementとBoundStatementの効率はほぼ同じですか?
long start0 = System.currentTimeMillis();
long start;
DataEntity mc = null;
ResultSet results = null;
BoundStatement bs = null;
PK pk = null;
CassandraData dao = new CassandraData();
long end;
Session session = dao.getSession();
//SimpleStatement ss = new SimpleStatement("select * from test where E='"+pk.E+"' and D="+pk.D+" and M="+pk.M);
PreparedStatement prepared = session.prepare(
"select * from test where E=? and D=? and M=?");
for (int i = 0; i < 100; i++) {
start = System.currentTimeMillis();
pk = ValidData.getOnePk();
//results = session.execute(ss);
bs = prepared.bind(pk.E, pk.D, pk.M);
results = session.execute(bs);
end = System.currentTimeMillis();
logger.info("Show One:" + (end - start)/1000.0 + "s elapsed.");
}
long end0 = System.currentTimeMillis();
logger.info("Show All:" + (end0 - start0)/1000.0 + "s elapsed.");
ありがとうございました。 – niaomingjian