Hello --
I'm trying to figure out how to optimize a query a bit, and think I've
hit a case that could easily be optimized by sqlite but isn't. I'm
wondering if it would be an easy optimization to add, or whether there
is some way I can 'hint' the optization into being.
I'm using a computationally expensive user defined function called
'match()'. In case it makes a difference, match() is written in C,
and for testing, I'm loading it as a shared library into the sqlite3
shell application. I want to return the value of match(), and also
order by it. So my query looks something like this:
SELECT uid, match("complex", "function", vector) FROM vectors AS match
ORDER BY match DESC LIMIT 20;
I had expected that match() would only be called once per row, but it
turns out to be called twice: once for the select, and once for the
ordering. I've confirmed this both by putting in a counter, and by
using 'EXPLAIN'. Is there any way to tell SQLite to reuse the value
of the first call rather than calling the function again?
I'm a comfortable C programmer, but only superficially familiar with
the SQLite code so far. If I'm not missing something obvious, hints
on where to look at writing a patch for this would be appreciated.
Thanks!
Nathan Kurz
[EMAIL PROTECTED]