Hi, Celemens

I created the requested log data by running the same operations in my
application, once compiled with the 3.7.15.1 version (OK) and once with the
3.7.16.2 (BAD performance). The query plans are quite different.

1. --- The query my application runs for this test
 
INSERT INTO md_fts_core (group_oid,tag_oid,file_oid,lang,data) 
 
SELECT g.oid, d.tag_oid, d.oid, d.lang, d.tdata from md_tag_data d 
INNER JOIN md_tag t ON d.tag_oid = t.oid 
INNER JOIN md_tag_group g ON t.group_oid = g.oid 
INNER JOIN md_fts_core_tag ct ON ct.type = 0 AND ct.oid = d.tag_oid 
WHERE d.oid IN
(1,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,3
4,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59
,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,
85,86,87,88,89,90,91,92,93,94,95,96,97,98)  
AND d.tag_oid IN (2157,7309,16265,16579)  
 
UNION 
 
SELECT g.oid, d.tag_oid, d.oid, d.lang, group_concat(d.tdata,' ') FROM
md_tag_data d 
INNER JOIN md_tag t ON d.tag_oid = t.oid 
INNER JOIN md_tag_group g ON t.group_oid = g.oid 
INNER JOIN md_fts_core_tag ct ON ct.type = 1 AND ct.oid = d.tag_oid 
WHERE d.oid IN
(1,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,3
4,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59
,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,
85,86,87,88,89,90,91,92,93,94,95,96,97,98)  
AND d.tag_oid IN (2157,7309,16265,16579)  
 
GROUP BY d.tag_oid,d.oid 
 



 
2. --- Plan of 3.7.15.1  (GOOD)
 
SEARCH TABLE md_tag_data AS d USING INDEX idx_md_tag_data_tag_oid
(tag_oid=?) (~65 rows)
EXECUTE LIST SUBQUERY 2
EXECUTE LIST SUBQUERY 2
SEARCH TABLE md_fts_core_tag AS ct USING INTEGER PRIMARY KEY (rowid=?) (~1
rows)
SEARCH TABLE md_tag AS t USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)
SEARCH TABLE md_tag_group AS g USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)
SEARCH TABLE md_tag_data AS d USING INDEX idx_md_tag_data_tag_oid
(tag_oid=?) (~65 rows)
EXECUTE LIST SUBQUERY 3
EXECUTE LIST SUBQUERY 3
SEARCH TABLE md_fts_core_tag AS ct USING INTEGER PRIMARY KEY (rowid=?) (~1
rows)
SEARCH TABLE md_tag AS t USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)
SEARCH TABLE md_tag_group AS g USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)
USE TEMP B-TREE FOR GROUP BY
COMPOUND SUBQUERIES 1 AND 2 USING TEMP B-TREE (UNION)
 

3. --- Plan of 3.7.16.2 (BAD)
 

SEARCH TABLE md_fts_core_tag AS ct USING INTEGER PRIMARY KEY (rowid=?) (~4
rows)
EXECUTE LIST SUBQUERY 2
SEARCH TABLE md_tag AS t USING INTEGER PRIMARY KEY (rowid=?) (~4 rows)
EXECUTE LIST SUBQUERY 2
SEARCH TABLE md_tag_group AS g USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)
SEARCH TABLE md_tag_data AS d USING INDEX idx_md_tag_data_tag_oid
(tag_oid=?) (~2 rows)
EXECUTE LIST SUBQUERY 2
EXECUTE LIST SUBQUERY 2
SEARCH TABLE md_fts_core_tag AS ct USING INTEGER PRIMARY KEY (rowid=?) (~4
rows)
EXECUTE LIST SUBQUERY 3
SEARCH TABLE md_tag AS t USING INTEGER PRIMARY KEY (rowid=?) (~4 rows)
EXECUTE LIST SUBQUERY 3
SEARCH TABLE md_tag_group AS g USING INTEGER PRIMARY KEY (rowid=?) (~1 rows)
SEARCH TABLE md_tag_data AS d USING INDEX idx_md_tag_data_tag_oid
(tag_oid=?) (~2 rows)
EXECUTE LIST SUBQUERY 3
EXECUTE LIST SUBQUERY 3
USE TEMP B-TREE FOR GROUP BY
COMPOUND SUBQUERIES 1 AND 2 USING TEMP B-TREE (UNION)
 

 

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

Reply via email to