That clears it up, many thanks!

On Fri, Aug 11, 2017 at 2:32 PM Richard Hipp <d...@sqlite.org> wrote:

> On 8/11/17, Wout Mertens <wout.mert...@gmail.com> wrote:
> > Aha ok, great!
> >
> > Now, forgive me, but there is still a difference in the byte code, and
> I'm
> > having a hard time decyphering it. The difference from the non-distinct
> and
> > the distinct is:
> >
> > * The table t1 is opened
>
> Yes, there is a little work done to open a cursor on the main table,
> but that cursor is never used.
>
> The reason that the cursor is opened is because at the top of the loop
> where the cursor needs to be opened, the query planner still does not
> realize that it does not actually need the cursor.
>
> > * There is an extra Seek in the scanning loop, it looks like it moves the
> > read pointer of table t1 to the indexed rowid. There are no reads
> > occurring, but won't the seek cause I/O?
>
> That seek is deferred.  In fact, we changed the name of the opcode to
> DeferredSeek in 3.20.0 to avoid confusion.  The actual work of seeking
> on the main table cursor is deferred until there is a read request on
> that cursor.  And no read request every occurs, and so the seek never
> happens.
> --
> 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

Reply via email to