Could somebody explain to me why a particular table analyze is taking so long? This is a large table, but still it seems the time to analyze this table is out of proportion. These are the statement and the times in seconds they take:
CREATE TABLE [ADDRESS] ([ADDRESS_ID] INTEGER PRIMARY KEY, [ADDRESS_LINE_1] TEXT, [POSTCODE] TEXT, [UPDATED_DATE] INTEGER, [ADDRESS_LINE_2] TEXT, [ADDRESS_LINE_3] TEXT, [ADDRESS_LINE_4] TEXT, [ADDRESS_LINE_5] TEXT) 0.95 INSERT INTO ADDRESS(ADDRESS_ID, ADDRESS_LINE_1, POSTCODE, UPDATED_DATE, ADDRESS_LINE_2, ADDRESS_LINE_3, ADDRESS_LINE_4, ADDRESS_LINE_5) values(:ADDRESS_ID, :ADDRESS_LINE_1, :POSTCODE, :UPDATED_DATE, :ADDRESS_LINE_2, :ADDRESS_LINE_3, :ADDRESS_LINE_4, :ADDRESS_LINE_5) SELECT ADDRESS_ID, ADDRESS_LINE_1, POSTCODE, UPDATED_DATE, ADDRESS_LINE_2, ADDRESS_LINE_3, ADDRESS_LINE_4, ADDRESS_LINE_5 FROM ADDRESS 0.12 CREATE INDEX IDX1_ADDRESS_ADDRESS_LINE_1 ON ADDRESS(ADDRESS_LINE_1) 0.14 CREATE INDEX IDX2_ADDRESS_POSTCODE ON ADDRESS(POSTCODE) 0.11 CREATE INDEX IDX3_ADDRESS_UPDATED_DATE ON ADDRESS(UPDATED_DATE) 0.14 CREATE INDEX IDX4_ADDRESS_ADDRESS_LINE_2 ON ADDRESS(ADDRESS_LINE_2) 0.12 CREATE INDEX IDX5_ADDRESS_ADDRESS_LINE_3 ON ADDRESS(ADDRESS_LINE_3) 0.12 CREATE INDEX IDX6_ADDRESS_ADDRESS_LINE_4 ON ADDRESS(ADDRESS_LINE_4) 0.11 CREATE INDEX IDX7_ADDRESS_ADDRESS_LINE_5 ON ADDRESS(ADDRESS_LINE_5) 0.05 analyze ADDRESS CREATE TABLE [ADDRESSLINK] ([ADDRESS_LINK_ID] INTEGER PRIMARY KEY, [ADDRESS_ID] INTEGER, [FOREIGN_ID] INTEGER, [ADDRESS_TYPE] INTEGER, [ADDRESS_LINK_TYPE] INTEGER) 0.74 INSERT INTO ADDRESSLINK(ADDRESS_LINK_ID, ADDRESS_ID, FOREIGN_ID, ADDRESS_TYPE, ADDRESS_LINK_TYPE) values(:ADDRESS_LINK_ID, :ADDRESS_ID, :FOREIGN_ID, :ADDRESS_TYPE, :ADDRESS_LINK_TYPE) SELECT ADDRESS_LINK_ID, ADDRESS_ID, FOREIGN_ID, ADDRESS_TYPE, ADDRESS_LINK_TYPE FROM ADDRESSLINK 0.12 CREATE INDEX IDX1_ADDRESSLINK_ADDRESS_ID ON ADDRESSLINK(ADDRESS_ID) 0.12 CREATE INDEX IDX2_ADDRESSLINK_FOREIGN_ID ON ADDRESSLINK(FOREIGN_ID) 0.03 analyze ADDRESSLINK CREATE TABLE [PHONE] ([PHONE_ID] INTEGER PRIMARY KEY, [PHONE_NUMBER] TEXT, [UPDATED_DATE] INTEGER) 0.61 INSERT INTO PHONE(PHONE_ID, PHONE_NUMBER, UPDATED_DATE) values(:PHONE_ID, :PHONE_NUMBER, :UPDATED_DATE) SELECT PHONE_ID, PHONE_NUMBER, UPDATED_DATE FROM PHONE 0.12 CREATE INDEX IDX1_PHONE_PHONE_NUMBER ON PHONE(PHONE_NUMBER) 0.12 CREATE INDEX IDX2_PHONE_UPDATED_DATE ON PHONE(UPDATED_DATE) 0.02 analyze PHONE CREATE TABLE [PHONELINK] ([PHONE_LINK_ID] INTEGER PRIMARY KEY, [PHONE_ID] TEXT, [FOREIGN_ID] INTEGER, [PHONE_LINK_TYPE] TEXT, [PHONE_TYPE_ID] TEXT) 0.8 INSERT INTO PHONELINK(PHONE_LINK_ID, PHONE_ID, FOREIGN_ID, PHONE_LINK_TYPE, PHONE_TYPE_ID) values(:PHONE_LINK_ID, :PHONE_ID, :FOREIGN_ID, :PHONE_LINK_TYPE, :PHONE_TYPE_ID) SELECT PHONE_LINK_ID, PHONE_ID, FOREIGN_ID, PHONE_LINK_TYPE, PHONE_TYPE_ID FROM PHONELINK 0.2 CREATE INDEX IDX1_PHONELINK_PHONE_ID ON PHONELINK(PHONE_ID) 0.12 CREATE INDEX IDX2_PHONELINK_FOREIGN_ID ON PHONELINK(FOREIGN_ID) 0.14 CREATE INDEX IDX3_PHONELINK_PHONE_LINK_TYPE ON PHONELINK(PHONE_LINK_TYPE) 0.16 CREATE INDEX IDX4_PHONELINK_PHONE_TYPE_ID ON PHONELINK(PHONE_TYPE_ID) 0.05 analyze PHONELINK CREATE TABLE [PHONETYPE] ([PHONE_TYPE_ID] TEXT, [PHONE_TYPE_DESCRIPTION] TEXT, [DORMANT_FLAG] INTEGER) 0.05 INSERT INTO PHONETYPE(PHONE_TYPE_ID, PHONE_TYPE_DESCRIPTION, DORMANT_FLAG) values(:PHONE_TYPE_ID, :PHONE_TYPE_DESCRIPTION, :DORMANT_FLAG) SELECT PHONE_TYPE_ID, PHONE_TYPE_DESCRIPTION, DORMANT_FLAG FROM PHONETYPE CREATE TABLE [ENTRY] ([ENTRY_ID] INTEGER PRIMARY KEY, [ADDED_BY] INTEGER, [UPDATED_BY] INTEGER, [READ_CODE] TEXT, [TERM_ID] TEXT, [ENCOUNTER_ID] INTEGER, [SECURE_TYPE] INTEGER, [ADDED_DATE] INTEGER, [UPDATED_DATE] INTEGER, [FREE_TEXT] TEXT, [DORMANT_FLAG] INTEGER, [ENTRY_TYPE] INTEGER, [START_DATE] INTEGER, [END_DATE] INTEGER, [PROBLEM_ID] INTEGER, [ENTRY_FLAGS] TEXT, [PATIENT_ID] INTEGER, [SUBJECT_TYPE] TEXT, [TERM_TEXT] TEXT) 294.94 INSERT INTO ENTRY(ENTRY_ID, ADDED_BY, UPDATED_BY, READ_CODE, TERM_ID, ENCOUNTER_ID, SECURE_TYPE, ADDED_DATE, UPDATED_DATE, FREE_TEXT, DORMANT_FLAG, ENTRY_TYPE, START_DATE, END_DATE, PROBLEM_ID, ENTRY_FLAGS, PATIENT_ID, SUBJECT_TYPE, TERM_TEXT) values(:ENTRY_ID, :ADDED_BY, :UPDATED_BY, :READ_CODE, :TERM_ID, :ENCOUNTER_ID, :SECURE_TYPE, :ADDED_DATE, :UPDATED_DATE, :FREE_TEXT, :DORMANT_FLAG, :ENTRY_TYPE, :START_DATE, :END_DATE, :PROBLEM_ID, :ENTRY_FLAGS, :PATIENT_ID, :SUBJECT_TYPE, :TERM_TEXT) SELECT ENTRY_ID, ADDED_BY, UPDATED_BY, READ_CODE, TERM_ID, ENCOUNTER_ID, SECURE_TYPE, ADDED_DATE, UPDATED_DATE, FREE_TEXT, DORMANT_FLAG, ENTRY_TYPE, START_DATE, END_DATE, PROBLEM_ID, ENTRY_FLAGS, PATIENT_ID, SUBJECT_TYPE, TERM_TEXT FROM ENTRY 51.02 CREATE INDEX IDX1_ENTRY_ADDED_BY ON ENTRY(ADDED_BY) 39.77 CREATE INDEX IDX2_ENTRY_UPDATED_BY ON ENTRY(UPDATED_BY) 48.12 CREATE INDEX IDX3_ENTRY_READ_CODE ON ENTRY(READ_CODE) 27.59 CREATE INDEX IDX4_ENTRY_ENCOUNTER_ID ON ENTRY(ENCOUNTER_ID) 32.19 CREATE INDEX IDX5_ENTRY_ADDED_DATE ON ENTRY(ADDED_DATE) 38.84 CREATE INDEX IDX6_ENTRY_UPDATED_DATE ON ENTRY(UPDATED_DATE) 39.11 CREATE INDEX IDX7_ENTRY_FREE_TEXT ON ENTRY(FREE_TEXT) 40.91 CREATE INDEX IDX8_ENTRY_ENTRY_TYPE ON ENTRY(ENTRY_TYPE) 37.8 CREATE INDEX IDX9_ENTRY_START_DATE ON ENTRY(START_DATE) 39.84 CREATE INDEX IDX10_ENTRY_PROBLEM_ID ON ENTRY(PROBLEM_ID) 41.72 CREATE INDEX IDX11_ENTRY_ENTRY_FLAGS ON ENTRY(ENTRY_FLAGS) 35.08 CREATE INDEX IDX12_ENTRY_PATIENT_ID ON ENTRY(PATIENT_ID) 40.01 CREATE INDEX IDX13_ENTRY_SUBJECT_TYPE ON ENTRY(SUBJECT_TYPE) 63.42 CREATE INDEX IDX14_ENTRY_TERM_TEXT ON ENTRY(TERM_TEXT) 1629.05 analyze ENTRY CREATE TABLE [AUTHORISATION] ([ENTRY_ID] INTEGER, [NUMBER_AUTHORISED] INTEGER, [MARKED_FOR_ISSUE_FLAG] INTEGER, [AUTHORISATION_TYPE] INTEGER, [EMERGENCY_AUTHORISATION] INTEGER, [MINIMUM_DAYS_BETWEEN_ISSUES] INTEGER, [NUMBER_OF_ISSUES] INTEGER, [TREATMENT_ID] INTEGER, [CURRENT_AUTHORISATION_FLAG] INTEGER, [MLEX_PRODUCT_ID] INTEGER, [MLEX_FORM_ID] INTEGER, [MLEX_PACK_ID] INTEGER, [DOSAGE_INSTRUCTIONS] TEXT, [SHORT_DOSE] TEXT, [NUMBER_OF_PACKS] INTEGER, [SUPPLY_AMOUNT] REAL, [SUPPLY_UNITS] TEXT, [PRIVATE_FLAG] INTEGER, [PATIENT_ID] INTEGER, [LAST_ISSUED_DATE] INTEGER, [AUTHORISED_DATE] INTEGER, [BATCH_ISSUE_FLAG] INTEGER) 39.7 INSERT INTO AUTHORISATION(ENTRY_ID, NUMBER_AUTHORISED, MARKED_FOR_ISSUE_FLAG, AUTHORISATION_TYPE, EMERGENCY_AUTHORISATION, MINIMUM_DAYS_BETWEEN_ISSUES, NUMBER_OF_ISSUES, TREATMENT_ID, CURRENT_AUTHORISATION_FLAG, MLEX_PRODUCT_ID, MLEX_FORM_ID, MLEX_PACK_ID, DOSAGE_INSTRUCTIONS, SHORT_DOSE, NUMBER_OF_PACKS, SUPPLY_AMOUNT, SUPPLY_UNITS, PRIVATE_FLAG, PATIENT_ID, LAST_ISSUED_DATE, AUTHORISED_DATE, BATCH_ISSUE_FLAG) values(:ENTRY_ID, :NUMBER_AUTHORISED, :MARKED_FOR_ISSUE_FLAG, :AUTHORISATION_TYPE, :EMERGENCY_AUTHORISATION, :MINIMUM_DAYS_BETWEEN_ISSUES, :NUMBER_OF_ISSUES, :TREATMENT_ID, :CURRENT_AUTHORISATION_FLAG, :MLEX_PRODUCT_ID, :MLEX_FORM_ID, :MLEX_PACK_ID, :DOSAGE_INSTRUCTIONS, :SHORT_DOSE, :NUMBER_OF_PACKS, :SUPPLY_AMOUNT, :SUPPLY_UNITS, :PRIVATE_FLAG, :PATIENT_ID, :LAST_ISSUED_DATE, :AUTHORISED_DATE, :BATCH_ISSUE_FLAG) SELECT ENTRY_ID, NUMBER_AUTHORISED, MARKED_FOR_ISSUE_FLAG, AUTHORISATION_TYPE, EMERGENCY_AUTHORISATION, MINIMUM_DAYS_BETWEEN_ISSUES, NUMBER_OF_ISSUES, TREATMENT_ID, CURRENT_AUTHORISATION_FLAG, MLEX_PRODUCT_ID, MLEX_FORM_ID, MLEX_PACK_ID, DOSAGE_INSTRUCTIONS, SHORT_DOSE, NUMBER_OF_PACKS, SUPPLY_AMOUNT, SUPPLY_UNITS, PRIVATE_FLAG, PATIENT_ID, LAST_ISSUED_DATE, AUTHORISED_DATE, BATCH_ISSUE_FLAG FROM AUTHORISATION 2.27 CREATE INDEX IDX0_AUTHORISATION_ENTRY_ID ON AUTHORISATION(ENTRY_ID) 2.59 CREATE INDEX IDX1_AUTHORISATION_NUMBER_OF_ISSUES ON AUTHORISATION(NUMBER_OF_ISSUES) 2.38 CREATE INDEX IDX2_AUTHORISATION_TREATMENT_ID ON AUTHORISATION(TREATMENT_ID) 3.41 CREATE INDEX IDX3_AUTHORISATION_DOSAGE_INSTRUCTIONS ON AUTHORISATION(DOSAGE_INSTRUCTIONS) 2.38 CREATE INDEX IDX4_AUTHORISATION_SHORT_DOSE ON AUTHORISATION(SHORT_DOSE) 2.66 CREATE INDEX IDX5_AUTHORISATION_SUPPLY_AMOUNT ON AUTHORISATION(SUPPLY_AMOUNT) 2.78 CREATE INDEX IDX6_AUTHORISATION_SUPPLY_UNITS ON AUTHORISATION(SUPPLY_UNITS) 2.45 CREATE INDEX IDX7_AUTHORISATION_PATIENT_ID ON AUTHORISATION(PATIENT_ID) 2.62 CREATE INDEX IDX8_AUTHORISATION_LAST_ISSUED_DATE ON AUTHORISATION(LAST_ISSUED_DATE) 2.44 CREATE INDEX IDX9_AUTHORISATION_AUTHORISED_DATE ON AUTHORISATION(AUTHORISED_DATE) 0.95 analyze AUTHORISATION The table with the long analyze is the table ENTRY and this has indeed a few million rows, but the table AUTHORISATION has a bit less than 1 million rows and the analyze there is proportionally much faster. Are these times just normal and is this just how it is or is there something that I should be aware of? Thanks for any advice. RBS ----------------------------------------------------------------------------- To unsubscribe, send email to [EMAIL PROTECTED] -----------------------------------------------------------------------------