Good moing, I've two tables, ANALISI with 1462632 records and PAZIENTE with 1408146 records, this simple count using one of the index of PAZIENTE require about 30 seconds to give back about 65000 records
SELECT COUNT(analisi0_.ID_ANALISI) AS col_0_0_ FROM Analisi analisi0_ INNER JOIN Paziente paziente1_ ON analisi0_.ID_PAZIENTE = paziente1_.ID_PAZIENTE WHERE (paziente1_.nome LIKE 'MARIA%')
I've also tried adding an index on analisi0_.ID_PAZIENTE but with no good results. Is there a way to enhance performance?
This is the corrisponding explain that seems ok to me
CREATE TABLE ANALISI ( ID_ANALISI INT UNSIGNED NOT NULL AUTO_INCREMENT, ID_PAZIENTE INT UNSIGNED NOT NULL, ID_SESSIONE INT UNSIGNED NOT NULL, TRACCIATO TINYINT UNSIGNED NOT NULL, CAMPIONE VARCHAR(30), ID_PATOLOGICO TINYINT UNSIGNED, REPARTO VARCHAR(40), TOTALE_PROTEINE FLOAT,
RAPP_AG FLOAT, ID_ANALISI_LINK INT UNSIGNED, ID_ANALISI_IFE INT UNSIGNED,
ID_ANALISI_DATI INT UNSIGNED,
ID_ANALISI_NOTA INT UNSIGNED, DATA_MODIFICA DATETIME,
ID_UTENTE_MODIFICA SMALLINT UNSIGNED, DATA_VALIDAZIONE DATETIME, ID_TIPO_VALIDAZIONE TINYINT UNSIGNED NOT NULL, ID_UTENTE_VALIDAZIONE SMALLINT UNSIGNED,
DATA_CANCELLAZIONE DATETIME, ID_UTENTE_CANCELLAZIONE SMALLINT UNSIGNED,
PRIMARY KEY (ID_ANALISI), INDEX IDX_CAMPIONE (CAMPIONE), INDEX IDX_REPARTO (REPARTO),
CONSTRAINT FK_ANALISI_PAZIENTE FOREIGN KEY (ID_PAZIENTE) REFERENCES PAZIENTE(ID_PAZIENTE), CONSTRAINT FK_ANALISI_SESSIONE FOREIGN KEY (ID_SESSIONE) REFERENCES SESSIONE(ID_SESSIONE), CONSTRAINT FK_ANALISI_PATOLOGICO FOREIGN KEY (ID_PATOLOGICO) REFERENCES PATOLOGICO(ID_PATOLOGICO), CONSTRAINT FK_ANALISI_TIPO_VALIDAZIONE FOREIGN KEY (ID_TIPO_VALIDAZIONE) REFERENCES TIPO_VALIDAZIONE(ID_TIPO_VALIDAZIONE), CONSTRAINT FK_ANALISI_UTENTE_MODIFICA FOREIGN KEY (ID_UTENTE_MODIFICA) REFERENCES UTENTE(ID_UTENTE), CONSTRAINT FK_ANALISI_UTENTE_VALIDAZIONE FOREIGN KEY (ID_UTENTE_VALIDAZIONE) REFERENCES UTENTE(ID_UTENTE), CONSTRAINT FK_ANALISI_UTENTE_CANCELLAZIONE FOREIGN KEY (ID_UTENTE_CANCELLAZIONE) REFERENCES UTENTE(ID_UTENTE),
CONSTRAINT FK_ANALISI_ANALISI_LINK FOREIGN KEY (ID_ANALISI_LINK) REFERENCES ANALISI(ID_ANALISI), CONSTRAINT FK_ANALISI_ANALISI_IFE FOREIGN KEY (ID_ANALISI_IFE) REFERENCES ANALISI_IFE(ID_ANALISI_IFE), CONSTRAINT FK_ANALISI_ANALISI_NOTA FOREIGN KEY (ID_ANALISI_NOTA) REFERENCES ANALISI_NOTA(ID_ANALISI_NOTA), CONSTRAINT FK_ANALISI_ANALISI_DATI FOREIGN KEY (ID_ANALISI_DATI) REFERENCES ANALISI_DATI(ID_ANALISI_DATI) ) ENGINE=IoDB;
CREATE TABLE PAZIENTE ( ID_PAZIENTE INT UNSIGNED NOT NULL AUTO_INCREMENT, ID_PAZIENTE_LAB VARCHAR(20), COGNOME VARCHAR(30), NOME VARCHAR(30), DATA_NASCITA DATE, ID_SESSO TINYINT UNSIGNED NOT NULL, RECAPITO VARCHAR(50), CODICE_FISCALE VARCHAR(30), ID_SPECIE TINYINT UNSIGNED NOT NULL, PRIMARY KEY (ID_PAZIENTE), INDEX IDX_DATA_NASCITA (DATA_NASCITA), INDEX IDX_COGNOME (COGNOME), INDEX IDX_NOME (NOME), INDEX IDX_SESSO (ID_SESSO), CONSTRAINT FK_PAZIENTE_SPECIE FOREIGN KEY (ID_SPECIE) REFERENCES SPECIE(ID_SPECIE),
CONSTRAINT FK_PAZIENTE_SESSO FOREIGN KEY (ID_SESSO) REFERENCES SESSO(ID_SESSO)
) ENGINE=IoDB;
