Si, scusate, siccome la query è davvero banale non pensavo che fosse importante (errore mio)…eccola :
select CONCAT(`Codice Cliente`,'*',ifnull(Codice_Periferia,'')) as `Codice`,
`Nominativo`,trim(concat(ifnull(`Indirizzo`,''),' ',ifnull(`Numero Civico`,''),if(Ifnull(Esponente,'')='','',concat('/',Esponente)))) as Indiriz,Cap
Citta,Provincia, Frazione, ifnull(Nazione,'') as Nazione
from clienti
where Nominativo like 'A%' And ifnull(Citta,'')<>''
and Convert(ifnull(Cap,'0'),UNSIGNED)>0
and IfNull(Indirizzo,'')<>''
Il db è MyIsam
ovviamente gli indici ci sono. Sia sul codice cliente (Key Btree) che sul campo ID (Primary) ed anche sul campo nominativo (Key Btree)
Il problema è che sul mio pc ci mette sempre lo stesso tempo (molto veloce max 10 secondi), sul pc del cliente…la prima volta ci mette qualche secondo (40/50), poi è quasi immediata, anche se cambio la query (per esempio Citta='Milano', oppure Nominativo Like ‘B%’ anzichè ‘A%’). Mentre se chiudo il programma e lo riavvio…si ripete lo scenario, la prima interrogazione ci mette un po' mentre le altre sono quasi immediate.
Il perche' la prima volta e' lenta e poi veloce e' BANALE: uso della cache e la cache dipende dalla connessione.
Potresti darmi qualche consiglio su come configurarlo al meglio?
Io ho una tabella da 10 MILIARDI di record e sta una manciata di secondi.
Woow. Hai una configurazione particolare del file di setup di MySql?
Vi ricordo che uso vbnet 2019.