web-dev-qa-db-fra.com

Quel est le plus rapide en PHP, MySQL ou MySQLi?

J'aimerais savoir si quelqu'un a une expérience directe de cette dichotomie. Quelques blogs disent que l'extension mysql est plus rapide que mysqli. Est-ce vrai?

Et je ne parle que de vitesse. Je sais que mysqli a des fonctionnalités qui ne sont pas présentes dans l’ancienne extension.

56
David

L'extension MySQL est très légèrement plus rapide que MySQLi dans la plupart des tests que j'ai vus rapportés. La différence est si faible, cependant, que cela ne devrait probablement pas être votre critère pour décider entre les deux.

D'autres facteurs nient la différence de performances entre mysql et mysqli. L'utilisation de mod_php ou de FastCGI, un cache de type bytecode comme APC, ou l'utilisation judicieuse de la mise en cache des données pour réduire le nombre de visites dans la base de données, est bien plus bénéfique pour les performances globales des scripts PHP que le choix de l'extension MySQL.

Ne sois pas penny sage et pound idiot! :-)

88
Bill Karwin

"Ça dépend."

Par exemple, PHP MySQL vs Métriques d'accès aux bases de données MySQLi et les commentaires qui suivent pointent les arguments dans les deux sens.

Si vous avez une base de données et un code de base matures, effectuez des tests et voyez ce qui fonctionne dans votre système. Sinon, arrêtez de vous inquiéter de l'optimisation prématurée.

10
Alkini

Voir http://php.net/manual/en/mysqlinfo.api.choosing.php

La performance globale des trois extensions est considérée à peu près identique. Bien que les performances de l'extension ne représentent qu'une fraction du temps d'exécution total d'une requête Web PHP. Souvent, l’impact est aussi faible que 0,1%. 

6
Gordon

En ce qui concerne le langage de programmation PHP, MySQL est l'ancien pilote de base de données et MySQLi, le pilote amélioré. MySQLi tire parti des nouvelles fonctionnalités de MySQL 5.

Caractéristiques de MySQLi tirées du site php.net:

  • Interface orientée objet
  • Prise en charge des déclarations préparées
  • Prise en charge de plusieurs déclarations
  • Prise en charge des transactions
  • Capacités de débogage améliorées
  • Prise en charge du serveur intégré
4
Pank

Peut-être que cela peut être une raison pour faire le bon choix :: The Plot to Kill PHP Extension MySQL

"Oui, vous avez bien lu. Récemment, Phillip Olson a envoyé à la liste de diffusion interne de PHP une proposition visant à supprimer l'extension PHP originale de MySQL dans les futures versions PHP."

4
AgelessEssence

Selon tous les résultats de Google pour les cas-tests liés par ceejayoz , il semblerait que MySQL soit au moins légèrement plus rapide que MySQLi dans tous les tests. Je recommande de lire les résultats pour plus de détails, mais je me suis dit que je posterais quelque chose qui répond directement à la question et qui heurte la réponse de ceejayoz.

3
Jay

La documentation PHP contient une bonne comparaison de mysql, mysqli et PDO . Je sais que vous avez seulement posé des questions sur la vitesse, mais d’autres pourraient trouver cela utile. Il parle des différences de fonctionnalités entre les options.

3
Don Kirkby

À moins que les millisecondes importent, ne vous inquiétez pas. Bien sûr, si vous n’avez pas besoin des fonctionnalités supplémentaires fournies par mysqli, restez-en à l’essai de mysql.

2
Taylor
<?php
$start = microtime();
$c = new mysqli('localhost', 'username', 'userpass', 'username_dbname');
$c -> select_db('username_dbname');


$q = $c -> query("SELECT * FROM example");

while ($r = $q -> fetch_array(MYSQLI_ASSOC))
  {
  echo $r['col1'] . "<br/>\n";
  }

$me = $c -> query("SELECT col1 FROM example WHERE id='11'") -> fetch_array(MYSQLI_ASSOC);

echo $me['col1'];
echo (microtime() - $start);
?>

Pourquoi utiliser mysqli oop avec un style procédural mysql ou mysqli légèrement plus rapide? Lorsque je teste le script ci-dessus, je reçois constamment .0009 secondes de plus que lorsque j'utilisais les deux autres. Lors de l'utilisation de mysql ou de mysqli procédural, j'ai chargé les scripts 20x dans chaque style et les deux étaient toujours supérieurs à 0,001. Je charge le script ci-dessus 20x et je reçois au-dessous de 0,001 5x. 

0
Josh