Well I have to write sql like that because I must have one table in from. Some component I have depend on this. This has worked fast before but I have workaround so is not a problem.

Regards Radovan

On 06.12.2019 11:35, Keith Medcalf wrote:
The join that you are using is not an outer join because you have constrained R.ID_ARHDAJ (which 
cannot be null in the table) to not be null, and the only way it can be null is if the left join is 
a "miss", meaning that it is really an inner join, not an outer join).  The optimizer 
spots this and does not force the nesting order implied by the "left join" operator -- 
choosing instead to process the query as an inner join.  If the reason that you are using this 
construction is specifically for the purpose of enforcing the nesting order then you should be 
phrasing your query as such:

     select R.ID_ARHDAJ, R.ID_ARHPLA, R.R, R.O, R.Z, R.VEZA
       from IZBPLA P
cross join ARHDAJ R
         on R.ID_ARHPLA = P.ID_PLA
      where P.ID_PLA < 1000000000;

so SQLite3 knows that you *always without exception* want R to be an inner loop 
to P no matter what anyone (including the statistics say about it).

Also, now that you have run ANALYZE the information about the relative shape of 
your data has been saved for the optimizer to use when optimizing queries.  You 
do not need to run ANALYZE again unless the shape significantly changes.

Generally though you would be better served to express the select as what it 
really is, run ANALYZE from time to time, and let the optimizer do what it is 
supposed to do, which is to get what you asked for as effeciently as possible.

select R.ID_ARHDAJ, R.ID_ARHPLA, R.R, R.O, R.Z, R.VEZA
   from IZBPLA P
   join ARHDAJ R
     on R.ID_ARHPLA = P.ID_PLA
  where P.ID_PLA < 1000000000;

Perhaps the optimizer could make a "left join" that is not actually an outer join into a 
"cross join" and preserve the nesting order ... ?


_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to