Hi Clemens,

ok, understand but I can't see why "NOT IN" would not force a full table 
scan but "LEFT JOIN" would ?

SELECT ART.ID FROM ART LEFT JOIN OCR ON OCR.ID = ART.ID WHERE OCR.ID IS 
NULL;
Is this query on "rowid" or isn't ?

Another thing:

I have converted my table like you proposed to "CREATE VIRTUAL TABLE "OCR" 
using fts4("FullText" varchar) and I can insert the rows just fine but can't 
make a functioning "JOIN" query.
I am just getting weird results.

"2 Rows returned from: SELECT docid FROM OCR WHERE FullText MATCH 'mailing'; 
(took 2ms)"
the rows 2 & 4.

But if I put this statement into a "JOIN" I get:
"9 Rows returned from: SELECT * FROM ART INNER JOIN OCR ON ART.ID = (SELECT 
docid FROM OCR WHERE FullText MATCH 'mailing'); (took 3ms)"

ID    Kundennummer    Rechnungsnummer    Rechnungsdatum    PDF    FullText
2                .                                . 
.                      .           .
2                .                                . 
.                      .           .
2                .
2                .
2                .
2                .
2                .
2                .

It should give back only two rows 2 & 4 have no other matching ART.ID = 
docid.
And why it is returning "FullText" as well  just adds to the mistery.

What am I missing here ?

KR,
Marta
-----Original Message----- 
From: Clemens Ladisch
Sent: Sunday, May 24, 2015 10:11 PM
To: sqlite-users at mailinglists.sqlite.org
Subject: Re: [sqlite] NOT EXISTS and LEFT JOIN Performance problem

ShadowMarta at yahoo.de wrote:
> Do you have some explanation of the terrible performace of "NOT EXIST" & 
> "LEFT JOIN" versus "NOT IN" as well ?

FTS tables can do two types of queries efficiently:
- lookups by rowid/docid;
- searches with MATCH.

Anything else (such as your "WHERE id = ?") ends up as a full table scan for 
each value.


Regards,
Clemens
_______________________________________________
sqlite-users mailing list
sqlite-users at mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users 

Reply via email to