Se la prima volta ci mette 10 minuti è perchè deve fare una full scan, quindi non è indicizzata...
Intanto, per leggibilità e per evitare errori, racchiuderei i campi e le tabelle nei classici apici, quindi la query diventa
In seconda battuta, modifica il nome del campo "Data conferma" e usa qualcosa tipo "Data_Conferma" (niente spazi nei nomi, ti eviti un sacco di problemi)codice:SELECT * FROM `MKTPart` WHERE `KeyCorso` = 'AB1234566' AND `Data conferma` <> '' ORDER BY `KeyCorso`
Ultimo....quanto è importante questa query? Nel senso...la usi spesso per ogni utente/ricerca? Immagino di sì, quindi:
L'ideale, a occhio, è creare una chiave sui due campi "KeyCorso" e "Data_Conferma" (una chiave con due campi, non una chiave per ogni campo).
Questo però ha senso SE il formato della Data_Conferma è un TimeStamp oppure un int(10) e ci salvi dentro un TimeStamp oppure la rappresentazione unixhepoc della data.
A questo punto, essendo fondamentalmente un numero, l'indice lavora molto meglio che una stringa. Fatto questo, cambi la query da <> '' a > 0
Ancora meglio sarebbe valorizzare sempre la Data_Conferma, impostando che può essere null e vale 0 come predefinito, così non dovresti avere problemi con le query di inserimento
![]()


Rispondi quotando