0 votes

Comment incorporer SQL_CALC_FOUND_ROWS et FOUND_ROWS() dans une application web existante

Je viens de lire à propos de SQL_CALC_FOUND_ROWS et de FOUND_ROWS() de MySQL qui vous permettent d'obtenir la taille totale des résultats d'une requête précédemment exécutée en supprimant les conditions LIMIT. Maintenant, je veux utiliser cette fonctionnalité dans une application web existante.

J'ai quelques approches en tête, mais je ne suis pas sûr de laquelle est la meilleure :

1) Est-ce que PHP a déjà des fonctions qui utilisent la fonction FOUND_ROWS()? J'utilise PHP 5 avec mysqli et MySQL 5 avec le moteur de stockage InnoDB.

2) L'application que je suis en train de construire a déjà son propre objet d'accès aux données qui encapsule la bibliothèque mysqli. Il est responsable de générer des requêtes CRUD fréquemment utilisées. Devrais-je modifier cet objet pour inclure SQL_CALC_FOUND_ROWS dans toutes les requêtes SELECT? Quels complications pourraient survenir?

D'autres idées/retours?

2voto

Quassnoi Points 191041

1) Est-ce que PHP a déjà des fonctions qui utilisent la fonction FOUND_ROWS()? J'utilise php 5 avec mysqli et mysql 5 avec le moteur de stockage innodb.

Je pensais que mysql_num_rows le faisait, mais après un peu de navigation, je pense que je pourrais avoir tort.

MISE À JOUR: Oui, j'ai tort :)

2) L'application que je construis a déjà son propre objet d'accès aux données qui enveloppe la bibliothèque mysqli. Il est responsable de générer des requêtes CRUD couramment utilisées. Dois-je modifier cet objet pour inclure SQL_CALC_FOUND_ROWS dans toutes les requêtes SELECT? Quelles complications pourraient exister?

SQL_CALC_FOUND_ROWS tentera de calculer le nombre de lignes qui seraient renvoyées s'il n'y avait pas de clause LIMIT dans votre requête.

Cela utilisera des métadonnées dans un seul cas :

  1. Quand votre table utilise le moteur MyISAM, ET
  2. Quand votre requête n'a pas de clause WHERE.

Dans les autres cas, SQL_CALC_FOUND_ROWS comptera les lignes une par une, impactant les performances.

Ne l'ajoutez pas à chaque requête.

1voto

Naveen Points 81

1.) Non, php n'a pas de fonction comme celle-ci.

2.) Je pense qu'il est préférable d'utiliser SQL_CALC_FOUND_ROWS seulement lorsque vous en avez vraiment besoin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X