What if the select had an ORDER BY ? wouldn't it have to pull the full set of rows ?
On Mon, Sep 18, 2017 at 5:11 AM, Simon Slavin <[email protected]> wrote: > > > On 18 Sep 2017, at 10:41am, David Wellman <[email protected]> > wrote: > > > So to answer my original question: there isn't an api that gives this > value ** because ** SQLite doesn't build the full answer set before > returning from that first sqlite3_step function call. > > Correct. SQLite knows how many results it will return only when you tell > it to take another sqlite3_step() and it cannot find any more rows which > fit your "WHERE" clause. > > This is because SQLite was designed to be small and work on tiny embedded > computers (i.e. a handheld recording device or nowdays a watch) and storing > the complete result-set before returning the first row might take a lot of > memory. It might have thousands of rows in. > > If you want to know how many rows will be returned, use > > SELECT COUNT(*) WHERE whatever > > This returns just one row, and does its calculation without having to > store each row that satisfies the WHERE clause. With an appropriate index > it can be surprisingly fast and might let your application work the way you > had expected. > > Simon. > _______________________________________________ > sqlite-users mailing list > [email protected] > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list [email protected] http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

