Yes thats what I found. This is faster:
for (int i = 0; i < 1000; i++) session.execute("INSERT INTO test.wibble (id, info) VALUES ('${"" + i}', '${"aa" + i}')") Than this: def ps = session.prepare("INSERT INTO test.wibble (id, info) VALUES (?, ?)") for (int i = 0; i < 1000; i++) session.execute(ps.bind(["" + i, "aa" + i] as Object[])) This is the fastest option of all (hand rolled batch): StringBuilder b = new StringBuilder() b.append("BEGIN UNLOGGED BATCH\n") for (int i = 0; i < 1000; i++) { b.append("INSERT INTO ").append(ks).append(".wibble (id, info) VALUES ('").append(i).append("','") .append("aa").append(i).append("')\n") } b.append("APPLY BATCH\n") session.execute(b.toString()) On Wed, Dec 11, 2013 at 10:56 AM, Sylvain Lebresne <sylv...@datastax.com> wrote: > >> This loop takes 2500ms or so on my test cluster: >> >> PreparedStatement ps = session.prepare("INSERT INTO perf_test.wibble >> (id, info) VALUES (?, ?)") >> for (int i = 0; i < 1000; i++) session.execute(ps.bind("" + i, "aa" + i)); >> >> The same loop with the parameters inline is about 1300ms. It gets >> worse if there are many parameters. > > > Do you mean that: > for (int i = 0; i < 1000; i++) > session.execute("INSERT INTO perf_test.wibble (id, info) VALUES (" + i > + ", aa" + i + ")"); > is twice as fast as using a prepared statement? And that the difference > is even greater if you add more columns than "id" and "info"? > > That would certainly be unexpected, are you sure you're not re-preparing the > statement every time in the loop? > > -- > Sylvain > >> I know I can use batching to >> insert all the rows at once but thats not the purpose of this test. I >> also tried using session.execute(cql, params) and it is faster but >> still doesn't match inline values. >> >> Composing CQL strings is certainly convenient and simple but is there >> a much faster way? >> >> Thanks >> David >> >> I have also posted this on Stackoverflow if anyone wants the points: >> >> http://stackoverflow.com/questions/20491090/what-is-the-fastest-way-to-get-data-into-cassandra-2-from-a-java-application > > -- http://qdb.io/ Persistent Message Queues With Replay and #RabbitMQ Integration