Simon Slavin, I tried your suggestion about creating the index:
>So do this:
>CREATE INDEX BLNTFieldName ON BlobLastNameTest (FieldName, rowid)
But sqlite complains that rowid is not a BLobLastNameTest column.
So then I tried your repeated selects. Your selects work fine but since we
are using Multiple concurrent Windows and Linux/pthread worker threads, these
repeated select resulrts would have to be processed in C++ code which would
overload each of the cores on the multicore CPU we are using. Instead, we were
hoping they we write a nice query to let the SQLite query processor do the
aggregation of BLOB(vertices) without incurring the full index scan cost.
Florian Weimer told us about this Posttgres feature DISTINCT ON which would
allow us to do this. However, SQLITE does not have DISTINCT ON yet, so the
Postgres thread recommended we use somerthing like to simulate DISTINCT ON:
select t1.FieldName,t1.rowid from BlobLastNameTest t1
where t1.rowid = (SELECT MIN(rowid) FROM
BlobLastNameTest
where FieldName =
t1.FIELDNAME)
order by t1.FieldName;
where the query plan looks like this:
0|0|0|SCAN TABLE BlobLastNameTest AS t1 USING COVERING INDEX
claramary5(~2709793 rows)
0|0|0|EXECUTE CORRELATED SCALAR SUBQUERY 1
1|0|0|SEARCH TABLE BlobLastNameTest USING COVERING INDEX claramary5 (FieldN
) (~1 rows)
Please let us know if there is a faster or more elegant way to this.
Finally, I tried your suggestion about : SELECT rowid,FieldName FROM
BlobLastNameTest GROUP BY FieldName ORDER BY rowid but it gives the wrong
answer where the right answer is the minimum rowid for a particular
FIELDNAME(i.e.LASTNAME). Your query runs very fast . Is it possible that you
could tweak it a litle so that it gives the right minimum ROWiD answer. Thank
you for all of your help.
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users