Hi all,
I have noticed a performance regression of 10 times in my db changing from 
version 3.6.32.1 to the 3.7.0.1.. It takes now 30 seconds against 3 seconds and 
query plans are different.

Considering that table:
customers have 800000 records
catalogues 60000 records
cronocatalogues 2600000
catalogues_customers 2000

This is my database:

CREATE TABLE anagraphics (
  idanagraphic        integer PRIMARY KEY AUTOINCREMENT,
  name          text COLLATE NOCASE,
  anagraphictype      text
);
CREATE TABLE CRONOcatalogues
( 
       idcrca INTEGER PRIMARY KEY AUTOINCREMENT,
       idcatalogue INTEGER,
       date DATETIME,
       validfrom DATETIME
);
CREATE TABLE catalogues
( 
       idcatalogue INTEGER PRIMARY KEY AUTOINCREMENT,
       cataloguename TEXT,
       idanagraphic INTEGER,
       type TEXT,
       active TEXT
);
CREATE TABLE catalogues_anagraphics
( 
       idcc INTEGER PRIMARY KEY AUTOINCREMENT,
       idcatalogue INTEGER,
       idanagraphic INTEGER,
       datereceived DATETIME
);
CREATE INDEX "idxanagraphictype"
ON "anagraphics" ("anagraphictype");
CREATE INDEX "idxdate"
ON "CRONOcatalogues" ("date");
CREATE INDEX "idxidcatalogue"
ON "catalogues_anagraphics" ("idcatalogue" ASC);
CREATE INDEX "idxidcatalogue2"
ON "CRONOcatalogues" ("idcatalogue" ASC, "validfrom" ASC);
CREATE INDEX "idxidanagraphic"
ON "catalogues_anagraphics" ("idanagraphic" ASC);


This is my query:

    select distinct tbl2.idcatalogue as idcatalogue, tbl2.type as type, 
tbl2.idanagraphic as idanagraphic, tbl2.maxdate as maxdate, anagraphics.name as 
nameforniture
    ,catalogues.cataloguename, anagraphics2.name as anagraphic
    from
    (
        select tbl.idcatalogue as idcatalogue, type, idanagraphic,  tbl.maxdate 
as maxdate from catalogues
        inner join
        (
        select max(validfrom) as maxdate, idcatalogue from CRONOcatalogues
        group by idcatalogue
        ) as tbl on catalogues.idcatalogue=tbl.idcatalogue
        and catalogues.active='s'
    ) as tbl2
inner join anagraphics on tbl2.idanagraphic = anagraphics.idanagraphic
inner join catalogues on tbl2.idcatalogue = catalogues.idcatalogue
 INNER JOIN catalogues_anagraphics ON 
TBL2.idcatalogue=catalogues_anagraphics.idcatalogue 
INNER JOIN anagraphics as anagraphics2 ON 
anagraphics2.idanagraphic=catalogues_anagraphics.idanagraphic 
WHERE catalogues_anagraphics.datereceived<TBL2.maxdate
order by nameforniture

I cannot explain this regression, may be something related to subqueries?
Thanks


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

Reply via email to