Ho molti componenti che usano il vecchio driver mssql da PHP. Voglio passare al nuovo driver SQLSRV di Microsoft ma le mie query sono molto più lente.PHP - Perché il nuovo driver SQLSRV è più lento del vecchio driver mssql?
Ho molti processi che gestiscono +400 000 righe.
Qui ci sono i miei test con 40 000 righe:
- testOldDriver_mssql = Righe 40000: 1 secondi
- testNewDriver_nonPDO = Righe 40000: 7 secondi
- testNewDriver_PDO = Righe 40000: 4 secondi
Qui il mio più grande processo (+480 000 righe):
- testOldDriver_mssql = Righe 484856: 27 secondi
- testNewDriver_nonPDO = Righe 484856: 120 secondi
- testNewDriver_PDO = Righe 484856: 47 secondi
- testPDO_ODBC = Righe 484856: 24 secondi
E` il nuovo driver è decisamente più lento? O mi sto perdendo qualcosa?
Edit 1:
Con "vecchio driver" intendo la biblioteca MSSQL deprecato (vedi php.net/mssql).
Il nuovo driver è quella fatta direttamente da Microsoft (vedi http://www.microsoft.com/en-us/download/details.aspx?id=20098)
La mia domanda è
SELECT * FROM myTable
WHERE pdvSaisie IN
(SELECT number FROM pdvs WHERE nom LIKE 'ZUEE %')
e utilizzando una diretta query()
(risultato senza la preparazione e la stessa se uso una dichiarazione preparata) .
Edit 2:
prova Aggiunto DOP/ODBC. Sorpresa, è più veloce: o
Che cosa si intende esattamente per 'vecchi' e 'nuovi'? Di quale tipo di attività stiamo parlando? Usi dichiarazioni preparate? Un sacco di incognite ... –
Grazie, ho modificato il mio messaggio originale. –
Potrebbe dipendere dal metodo di prova? Il database di test può essere piuttosto difficile, con il caching delle query in corso e tutto. Inoltre, hai letto le differenze di rendimento? Controlla http://af-design.com/blog/2009/01/30/php-mysql-vs-mysqli-database-access-metrics/ e il http://stackoverflow.com/questions/171400/ "locale" quale-è-più-veloce-in-php-mysql-o-mysqli – Nanne