On 8 January 2018 at 21:58, Simon Slavin <slav...@bigfraud.org> wrote: > > > num+1, cast(round(abs(random())/9223372036854775808) as int) from > > you’ve probably looking at sanity in the rear view mirror. Suppose > someone has to read your code and figure out what it’s meant to do. If you > expect your code to be read by others, the amount of documentation you'll > have to write takes longer than writing the software properly.
The statement - select cast(round(abs(random())/9223372036854775808) as int) means I want sqlite to toss a virtual coin and return 0 or 1. It looks like a kludge but I could find neither a simpler nor clearer way of expressing this, can you? > > > For a large number of entries, I assumed there would be greater overhead > in > > preparing and binding the values than both generating and storing them > with > > a single RCTE. > > SQLite is just software written in C. There’s no reason to believe it’ll > be any more efficiently than your own C code. Even your respect for the > SQLite development team shouldn’t outweigh the advantage of working with > code you write yourself. > > I think Ryan was suggesting to calculate the entries in the main application code and then use sqlite to perform millions of inserts - which would imply a call to sqlite3_exec with an extremely long *sql string (or sqlite3_prepare_v2() with millions of call to sqlite3_bind_int64, etc). Wouldn't it be more efficient call one sqlite3_exec with *sql being a single RCTE which does all the work? An additional advantage is that it relies on sqlite's own c code which I would hope is more thoroughly debugged and portable that my own. _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users