Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy powinienem używać przygotowanych instrukcji dla MySQL w PHP PERFORMANCE-WISE?

Historia

To była moja pierwsza odpowiedź na Stackoverflow. Od tego czasu wiele się zmieniło, zwłaszcza wycofanie i usunięcie API mysql. Nawet jeśli nadal korzystasz z php 5.6, api mysql_* nie powinno być używane. Teraz PDO lub mysqli to jedyne opcje do wyboru. PDO jest lepsze z wielu powodów.

Czy przygotowane instrukcje są buforowane podczas ładowania strony?

Ta sama przygotowana instrukcja nie będzie używana między ładowaniami stron. Za każdym razem trzeba go przygotować. Jeśli ściśnięcie każdej dużej milisekundy ma znaczenie, dobrym pomysłem może być procedura składowana (zakładając, że masz skomplikowane zapytanie).

W przypadku dużych wstawek (tysiące wierszy) Większy wzrost można prawdopodobnie uzyskać, wrzucając dane do pliku tekstowego i ładując je za pomocą polecenia LOAD DATA IN FILE . To dużo szybciej niż seria wstawek.

Oryginalna odpowiedź

Prawda jest taka, że ​​czasami mysqli jest szybsze, a innym razem mysql api jest szybsze. Ale różnica jest naprawdę niewielka. Jeśli spojrzysz na którykolwiek z testów wydajności w Internecie, różnica wynosi tak naprawdę tylko 10 - 20 milisekund. Najlepszym sposobem na zwiększenie wydajności jest optymalizacja projektu stołu.

Wiele testów, które 'udowadnia', że starsze API jest szybsze i wygodniej, zapomina, że ​​dla maksymalnego bezpieczeństwa mysql_real_escape_string() powinno być wywoływane dla każdej zmiennej użytej w zapytaniu.

Zapytania są buforowane przez serwer wtedy i tylko wtedy, gdy dane we wszystkich tabelach użytych w zapytaniu pozostały niezmienione.

Poczekaj na kolejną aktualizację z rzeczywistymi numerami



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dodać identyfikator automatycznego zwiększania do istniejącej tabeli?

  2. MySQL:jak uzyskać różnicę między dwoma znacznikami czasu w kilka sekund

  3. mysql group_concat z licznikiem w środku?

  4. Ograniczenie klucza obcego MySQL DROP

  5. PHP Wiązanie symbolu wieloznacznego