Have the following query: INSERT INTO A3Test7D4_J (PATIENT_ID, ENTRY_ID, READ_CODE, TERM_TEXT, ADDED_DATE, START_DATE, NUMERIC_VALUE, TYPE_SPECIFIC_INFO) SELECT E.PATIENT_ID, E.ENTRY_ID, E.READ_CODE, E.TERM_TEXT, E.ADDED_DATE, E.START_DATE, EA.NUMERIC_VALUE, EA.TYPE_SPECIFIC_INFO FROM A3Test7D4_E E INNER JOIN ENTRY_ATTRIBUTES EA ON (EA.ENTRY_ID = +E.ENTRY_ID) WHERE EA.ATTRIBUTE_TYPE = 101 ORDER BY E.PATIENT_ID ASC, E.ENTRY_ID ASC, EA.NUMERIC_VALUE ASC
And as it was quite slow (50 secs) I did an analyze on the table ENTRY_ATTRIBUTES and after that the query was much faster, less than one second. Now, what I don't understand about this is that the query plan is still the same: 0--0--0--SCAN TABLE A3Test7D4_E AS E (~18491 rows) <--> 0--1--1--SEARCH TABLE ENTRY_ATTRIBUTES AS EA USING COVERING INDEX IDX_ENTRY_ATTRIBUTES_ATTRIBUTE_TYPE_ENTRY_ID_TYPE_SPECIFIC_INFO_NUMERIC_VALUE (ATTRIBUTE_TYPE=? AND ENTRY_ID=?) (~2 rows) <--> 0--0--0--USE TEMP B-TREE FOR ORDER BY And also the data in sqlite_stat1 is still the same: IDX_ENTRY_ATTRIBUTES_NUMERIC_VALUE 1389416 176 IDX_ENTRY_ATTRIBUTES_TYPE_SPECIFIC_INFO 1389416 9 IDX_ENTRY_ATTRIBUTES_ENTRY_ID 1389416 2 IDX_ENTRY_ATTRIBUTES_ATTRIBUTE_TYPE 1389416 198488 IDX_ENTRY_ATTRIBUTES_ATTRIBUTE_TYPE_ENTRY_ID_TYPE_SPECIFIC_INFO_NUMERIC_VALUE 1389416 198488 2 2 1 The data in the table is the same as well. The other table involved A3Test7D4_E is exactly the same as well. So why runs this query so much faster after running the analyze? RBS _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users