Molte autoscuole d' italia interrogano il Db con questa query con ogni loro allievo, quindi a volte si saturano le risorse del DB
Molte autoscuole d' italia interrogano il Db con questa query con ogni loro allievo, quindi a volte si saturano le risorse del DB
a volte comunque a caricare i dati nella jquery datatable ci va anche 2 minuti interi
ok, rifo per la terza volta la domanda: hai controllato gli indici?![]()
sìsì tutto indicizzato!!
ok. allora guarda se il server è ben carrozzato. e anche, se quella è la query più eseguita e più problematica, provare a pensare a una stored procedure
sì quella è una delle 2 più pesanti!
prova questa
ma non assicuro nullacodice:SELECT sync.id_allievo AS id_allievo, Count(sync.id_allievo) AS schede, li.domande AS domande, ifnull(li.errori, 0) AS errori, Ifnull(mediaerrori,0) AS mediaerrori FROM (SELECT * FROM sync WHERE sync._stato <> 'D' AND sync._stato <> 'X' AND sync.tipo = 'TipoEsame' sync.id_allievo = '. $id_allievo . ' ) sync LEFT JOIN allievo A ON a.id_allievo = sync.id_allievo LEFT JOIN clientescuola CS ON (cs.id_clientescuola = a.id_clientescuola AND cs.id_sedeclienteneca = '. $id_sedeClienteNeca . ') LEFT JOIN listato LI ON li.tipo = a.listatoquiz JOIN (SELECT Avg(media) AS mediaerrori FROM (SELECT errori AS media FROM sync WHERE id_allievo='. $id_allievo . ' AND tipo = 'TipoEsame' ORDER BY `sync`.`datafine` DESC limit 15) AS mediaerrori) MediaErrori![]()
Sì funzionare funziona... M a performance sono uguali...temo che il problema sia proprio la tabella sync che è ingestibile!
prova con una SP passando per tabelle temporanee. con SQL Server le performance aumentano in maniera spaventosa (non so con MySQL)
per esempio
poi nella tua select usi TEMP al posto di sync, ma senza WHERE perché è già pulitacodice:SELECT * INTO TEMP FROM sync WHERE sync._stato <> 'D' AND sync._stato <> 'X' AND sync.tipo = 'TipoEsame' sync.id_allievo = '. $id_allievo . ' )
Scusa non sono così bravo di sql e non ho capito...come posso fare a trasformare quella query?