sql >> Database >  >> RDS >> Mysql

Moet ik voorbereide instructies voor MySQL gebruiken in PHP PERFORMANCE-WISE?

De geschiedenis

Dit was mijn eerste Stackoverflow-antwoord. Sindsdien is er veel veranderd, met name de afschrijving en verwijdering van de mysql API. Zelfs als je nog steeds op php 5.6 zit, mag de mysql_* api niet worden gebruikt. Nu zijn PDO of mysqli de enige opties om te kiezen. PDO is om veel redenen beter.

Worden voorbereide instructies in de cache opgeslagen tijdens het laden van pagina's?

Dezelfde voorbereide instructie wordt niet gebruikt tussen het laden van pagina's. Het moet elke keer worden voorbereid. Als elke milliseconde belangrijk is, kan een opgeslagen procedure een goed idee zijn (ervan uitgaande dat je een ingewikkelde vraag hebt).

Voor grote invoegingen (duizenden rijen) Een grotere boost kan waarschijnlijk worden verkregen door uw gegevens in een tekstbestand te dumpen en het te laden met LOAD DATA IN FILE . Het is een stuk sneller dan een reeks inserts.

Het oorspronkelijke antwoord

De waarheid is dat mysqli soms sneller is en op andere momenten mysql api sneller. Maar het verschil is echt heel klein. Als je naar een van de prestatietests op internet kijkt, is het verschil eigenlijk slechts 10 - 20 milliseconden. De beste manier om de prestaties te verbeteren, is door het tafelontwerp te optimaliseren.

Veel van de tests die 'bewijzen' dat de oudere api sneller is, vergeten gemakshalve dat voor maximale veiligheid mysql_real_escape_string() moet worden aangeroepen voor elke variabele die in de query wordt gebruikt.

Query's worden door de server in de cache opgeslagen, als en alleen als de gegevens op alle tabellen die in de query worden gebruikt, ongewijzigd zijn gebleven.

Wacht op een nieuwe update met actuele cijfers



  1. Een voorloopnul toevoegen aan sommige waarden in de kolom in MySQL

  2. Oracle:Selecteer uit recordgegevenstype

  3. MySQL-tabel met TEKST-kolom

  4. Sql Server int vs nvarchar vergelijking op prestaties?