Given this table:
CREATE TABLE AMorb37F6_E
([PATIENT_ID] INTEGER,
[ENTRY_ID] INTEGER PRIMARY KEY,
[READ_CODE] TEXT,
[ADDED_DATE] TEXT,
[START_DATE] TEXT)
And these indexes:
IDX10$ENTRY$PATIENT_ID
IDX11$ENTRY$TERM_TEXT
IDX12$ENTRY$READ_CODE$ADDED_DATE
IDX13$ENTRY$READ_CODE$START_DATE
IDX14$ENTRY$READ_CODE$PROBLEM_ID
IDX15$ENTRY$READ_CODE$ADDED_DATE$PROBLEM_ID
IDX16$ENTRY$READ_CODE$ADDED_DATE$START_DATE$PROBLEM_ID
IDX2$ENTRY$ADDED_BY
IDX3$ENTRY$READ_CODE
IDX4$ENTRY$ENCOUNTER_ID
IDX5$ENTRY$ADDED_DATE
IDX6$ENTRY$UPDATED_DATE
IDX7$ENTRY$START_DATE
IDX8$ENTRY$PROBLEM_ID
IDX9$ENTRY$ENTRY_FLAGS
And this query:
SELECT
E.PATIENT_ID,
E.ENTRY_ID,
E.READ_CODE,
E.ADDED_DATE,
E.START_DATE
FROM
ENTRY E
WHERE
E.READ_CODE GLOB 'G2*' AND
(NOT E.DORMANT_FLAG = 1)
ORDER BY
E.PATIENT_ID ASC, E.ENTRY_ID ASC
I get this query plan (explain query plan):
order from detail
----------------------------------------------------
0 0 TABLE ENTRY AS E WITH INDEX
IDX16$ENTRY$READ_CODE$ADDED_DATE$START_DATE$PROBLEM_ID
My question is why doesn't it pick the index:
IDX3$ENTRY$READ_CODE
Not sure, but I would think that is more effective.
What are the general rules as to how SQLites picks from the available
indexes?
RBS
-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------