sql >> Database teknologi >  >> RDS >> Mysql

Skal jeg bruge forberedte udsagn til MySQL i PHP PERFORMANCE-WISE?

Historien

Dette var mit første Stackoverflow-svar. Meget har ændret sig siden, især udfasningen og fjernelsen af ​​mysql API. Selvom du stadig er på php 5.6, bør mysql_* api'et ikke bruges. Nu er PDO eller mysqli de eneste muligheder at vælge. PDO er bedre af mange grunde.

Er forberedte udsagn cachelagret på tværs af sideindlæsninger?

Den samme forberedte erklæring vil ikke blive brugt mellem sideindlæsninger. Det skal forberedes hver gang. Hvis det er vigtigt at presse hvert stort millisekund, kan en lagret procedure være en god idé (forudsat at du har en kompliceret forespørgsel).

For store inserts (tusindvis af rækker) Et større boost kan sandsynligvis opnås ved at dumpe dine data ind i en tekstfil og indlæse den med LOAD DATA IN FILE . Det er meget hurtigere end en række indsatser.

Det oprindelige svar

Sandheden i sagen er, at nogle gange er mysqli hurtigere og andre gange er mysql api hurtigere. Men forskellen er virkelig meget lille. Hvis du ser på nogen af ​​ydeevnetestene på nettet, er forskellen i virkeligheden kun 10 - 20 millisekunder. Den bedste måde at øge ydeevnen på er at optimere borddesignet.

Mange af testene, der 'beviser', at det ældre api er hurtigere glemmer bekvemt, at for maksimal sikkerhed skal mysql_real_escape_string() kaldes for hver variabel, der bruges i forespørgslen.

Forespørgsler cachelagres af serveren, hvis og kun hvis dataene på alle de tabeller, der bruges i forespørgslen, er forblevet uændrede.

Vent endnu en opdatering med faktiske tal



  1. Pivotering, afpivotering og opdeling af kolonner i Power BI Query Editor

  2. Hvordan opretter man forbindelse til MySQL på Amazon EC2 fra Windows?

  3. Hvordan indstilles primær nøgle til automatisk stigning i PostgreSQL?

  4. Hvordan får jeg ID'et for flere indsatte rækker i MySQL?