I have a query which takes 17 minutes to run with 3.7.3 against 800ms with 3.7.2
The query is: SELECT x.sheep_no, x.registering_flock, x.date_of_registration FROM sheep x LEFT JOIN (SELECT s.sheep_no, prev.flock_no, prev.owner_person_id, s.date_of_registration, prev.owner_change_date FROM sheep s JOIN flock_owner prev ON s.registering_flock = prev.flock_no AND (prev.owner_change_date <= s.date_of_registration || ' 00:00:00') WHERE NOT EXISTS (SELECT 'x' FROM flock_owner later WHERE prev.flock_no = later.flock_no AND later.owner_change_date > prev.owner_change_date AND later.owner_change_date <= s.date_of_registration || ' 00:00:00') ) y ON x.sheep_no = y.sheep_no WHERE y.sheep_no IS NULL ORDER BY x.registering_flock explain query plan with 3.7.3: 0 0 TABLE sheep AS s 1 1 TABLE flock_owner AS prev WITH INDEX sqlite_autoindex_flock_owner_1 0 0 TABLE flock_owner AS later WITH INDEX sqlite_autoindex_flock_owner_1 0 0 TABLE sheep AS x 1 1 TABLE AS y explain query plan with 3.7.2: 0 0 TABLE sheep AS s 1 1 TABLE flock_owner AS prev WITH INDEX sqlite_autoindex_flock_owner_1 0 0 TABLE flock_owner AS later WITH INDEX sqlite_autoindex_flock_owner_1 0 0 TABLE sheep AS x 1 1 TABLE AS y WITH AUTOMATIC INDEX Seems the planner has missed creating an index for the second nested SELECT. The flock_owner table has an index on each of flock_no, owner_person_id and owner_change_date. Pete -- Peter Hardman Breeder of Shetland sheep and cattle _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users