On Thu, Dec 12, 2013 at 4:19 PM, Richard Hipp <[email protected]> wrote:
> On Wed, Dec 11, 2013 at 3:00 PM, Nick Hutchinson <[email protected] > >wrote: > > > I ran my test app under Visual Studio's profiler, and saw that a > > substantial amount of time is spent in calls to sqlite3Reprepare(). > Reading > > the docs at http://www.sqlite.org/c3ref/prepare.html, I assume SQLlite > is > > recompiling the statement because it thinks it can find a better query > plan > > based on the parameters I'm binding to it. > > Correct. With SQLITE_ENABLE_STAT[34], whenever you change parameter > bindings, SQLite is forced to reprepare the statement. This is because the > choice of algorithm depends upon the actual values bound to parameters. In > your case, the changes to the bound parameters does not make a difference > in the algorithm, but SQLite has no way of knowing that without going > through the whole re-prepare process. > > Yes, this might require more time preparing statements. That's one of the > trade-offs for using SQLITE_ENABLE_STAT[34]. And, that is also why > STAT[34] is disabled by default. > Perhaps it needs to be finer-grained and enabled/disabled on a per-statement-basis as well? Or perhaps on a per-table basis instead? Just thinking aloud. --DD _______________________________________________ sqlite-users mailing list [email protected] http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

