On 11/3/16, Jens Alfke <[email protected]> wrote:
> Does the query optimizer coalesce identical calls to deterministic
> functions? I’m thinking in particular of a statement like:
>
>       CREATE INDEX byFoo ON jtable (json_extract(body, ‘$.foo’)) WHERE
> json_extract(body, ‘$.foo’) IS NOT NULL
>
> where it would improve performance if the JSON were not parsed twice.

In the case of the CREATE INDEX statement, no.  On the other hand,
json_extract() is able to parse JSON at a rate of over 300MB/s so it
might not be as sluggish as you expect.

If you subsequently do something like:

    SELECT * FROM jtable WHERE json_extract(body, '$.foo')=25;

Then the json_extract() function is not called at all.  Not even once.
So under the theory that queries are more common than CREATE INDEX
statements, your total number of calls to json_extract seem like they
will be minimal.

-- 
D. Richard Hipp
[email protected]
_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to