> -----Original Message-----
> From: D. Richard Hipp [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, January 13, 2004 6:17 PM
> To: [EMAIL PROTECTED]
> Subject: Re: [sqlite] Optimizing a query
> 
> 
> > Can anyone suggest a good way to optimize the following query?
> > 
> > SELECT count(*) FROM propositions p, output o
> >  WHERE p.verb_id=o.verb_id
> >    AND p.tag=o.tag
> >    AND (p.stop!=o.stop OR p.start!=o.start);
> > 
> 
> CREATE INDEX whatever ON output(verb_id,tag);
> 
> That will make it O(NlogN) instead of O(N**2).

So, no way to make it O(N)?  If the two indexes could be iterated together,
as in the following pseudocode, it would seem to be an O(N) operation.

  P_INDEX:
  while ($p_entry = p_index.next) {
    while ($o_entry = o_index.next) {
      if ($o_entry == $p_entry) {
        ...do the rest of the query criteria...
      } elsif ($o_entry > $p_entry {
        next P_INDEX;
      }
    }
  }

 -Ken


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to