I don't claim any SQLite expertise, but indexes on values like 
True/False, Male/Female -- i.e. where there are only a couple or a few 
different values possible in the column --   are normally to be avoided 
because low-cardinality indexes tend to be inefficient.  What is the 
advice of the SQLite gurus in this respect?

Regards
Tim Romano

P.S. I've noticed a striking performance boost in SQLite when joined 
inline views (as shown below) are used instead of standard table joins.  
I haven't delved into it but it could be that because the transient 
table instantiated by the inline select contains only a few rows and 
SQLite uses this set of rows as the "inner loop", this turns out be a 
better approach for the query than the indexes that might have been 
chosen otherwise.

select a, b, c
from myTable T1
JOIN
(select x, y, z from myOtherTable where ...) as T2
on T1.a = T2.z


On 1/6/2010 5:28 PM, Doyel5 wrote:
> The table ‘Occurrence’ has  1,600,000 records. The table looks like:
> CREATE TABLE Occurrence
> (
> SimulationID  INTEGER,    SimRunID   INTEGER,    OccurrenceID   INTEGER,
> OccurrenceTypeID    INTEGER,    Period    INTEGER,    HasSucceeded    BOOL,
> PRIMARY KEY (SimulationID,  SimRunID,   OccurrenceID)
> )
>
>
> CREATE INDEX "Occurrence_HasSucceeded_idx" ON "Occurrence" ("HasSucceeded"
> ASC)
>
>    
> <snip>

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

Reply via email to