Mam wiele komponentów przy użyciu starego sterownika mssql z PHP. Chcę przełączyć na nowy sterownik SQLSRV firmy Microsoft, ale moje zapytania są dużo wolniejsze.PHP - Dlaczego nowy sterownik SQLSRV działa wolniej niż stary sterownik mssql?
Mam wiele procesów obsługujących +400 000 wierszy.
Oto moi testy z 40 000 rzędów:
- testOldDriver_mssql = Rzędy 40000: 1 sekundy
- testNewDriver_nonPDO = rzędy 40000: 7 sekund
- testNewDriver_PDO = rzędy 40000: 4 sekundy
Tutaj mój największy proces (+480 000 wierszy):
- testOldDriver_mssql = Rz 484856: 27 sekund
- testNewDriver_nonPDO = rzędy 484856: 120 sekund
- testNewDriver_PDO = rzędy 484856: 47 sekund
- testPDO_ODBC = rzędy 484856: 24 sekund
Czy nowy sterownik zdecydowanie wolniej? Czy może czegoś brakuje?
Edit 1:
Przez "starego sterownika" mam na myśli przestarzałej biblioteki MSSQL (patrz php.net/mssql).
Nowy sterownik jest jeden bezpośrednio przez Microsoft (patrz http://www.microsoft.com/en-us/download/details.aspx?id=20098)
Moje zapytanie jest
SELECT * FROM myTable
WHERE pdvSaisie IN
(SELECT number FROM pdvs WHERE nom LIKE 'ZUEE %')
i za pomocą bezpośredniego query()
(bez przygotowania i sam wynik, jeśli mogę użyć przygotowane oświadczenie) .
Edit 2:
Test Dodany PDO/ODBC. Niespodzianka, to szybciej: o
Co dokładnie masz na myśli przez 'stare' i 'nowe'? O jakim rodzaju działalności mówimy? Czy korzystasz z przygotowanych wyciągów? Wiele niewiadomych ... –
Dzięki, zredagowałem moją oryginalną wiadomość. –
Czy to może zależeć od metody testowania? Testowanie bazy danych może być dość trudne, z buforowaniem zapytań i wszystkimi. Czy też przeczytałeś o różnicach w wydajności? Sprawdź http://af-design.com/blog/2009/01/30/php-mysql-vs-mysqli-database-access-metrics/ oraz "local" http://stackoverflow.com/questions/171400/ który jest najszybszy w php-mysql-or-mysqli – Nanne