On 2017/05/29 4:05 PM, x wrote:
Thanks Richard. I can’t claim to fully understand the part about the app 
calling sqlit3_column_text but I’m reassured that leaving the arithmetic to 
sqlite is the way to go.

Actually what Richard is saying is that you SHOULD do the arithmetic yourself when you can, because you can boldly make assumptions about the code that you write, but he, or the SQLite engine to be precise, cannot be so bold, it may not be accurate in accepting that nothing about the database will change from one evaluation to the next, so it has to recompute - but you may optimise that computation out because you KNOW your system and you KNOW you won't be changing column collations or type affinities etc. in between steps.

He is also saying that the effort is probably not worth all that many CPU cycles, unless the computation is really heavy, and even then... So before you embark on that road, make sure the gains are well worth the effort.



From: Richard Hipp<mailto:d...@sqlite.org>
Sent: 29 May 2017 14:52
To: SQLite mailing list<mailto:sqlite-users@mailinglists.sqlite.org>
Subject: Re: [sqlite] Does prepare do arithmetic?

On 5/29/17, x <tam118...@hotmail.com> wrote:
Thanks Clemens, that clears that up.

I’m still left wondering though why it calculates 2+2 every step in

‘select 2+2 from Tbl;’

All result values must be recomputed on every step because the
application can change the value by (for example) calling
sqlite3_column_text and thus causing the integer result to be
converted into a string result.  The result needs to be reset back to
an integer for the next row.

It is true that SQLite could compute 2+2 and store the result then
copy the result into the result register for each result row, but
doing the copy is not measurably faster than simply redoing the 2+2
computation.

You will notice that in a more complex computation like:

     SELECT 2*15-5+11/5<<3*1 FROM tbl

That the "2*15-5+11/5" and "3*1" subexpressions are computed just
once, and only the final "<<" operator is repeated for each row.

--
D. Richard Hipp
d...@sqlite.org
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to