Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 27-04-2009 17:20:38

docaze21
Membre
Date d'inscription: 19-03-2009
Messages: 23

[1.7][Zend_db] SQL_CALC_FOUND_ROWS au lieu de count

Bonjour,

Je souhaite faire du page/page sur une liste de résultats.
Pour optimiser un minimum mes requêtes j'utilise SQL_CALC_FOUND_ROWS.
Mon exemple :

Code:

//Première requête qui récupère le nombre d enregistrement
SELECT count(id) FROM matable;
//Deuxième requête qui récupère simplement les résultats de ma page
SELECT id FROM matable LIMIT 0,10;

Vous voyez ici que nous utilisons 2 requêtes.
Je souhaites donc utiliser ceci :

Code:

//Je récupère simplement les résultats de ma page
SELECT SQL_CALC_FOUND_ROWS id FROM matable LIMIT 0,10;
//Puis j execute cette simple requete pour savoir le nombre d element qu il y'aurait sans le limit
SELECT FOUND_ROWS( );

Comme vous pouvez le voir ce code est plus optimisé.

Je viens donc sur ce forum pour savoir comment intégrer ce système quand j'utilise :

Code:

$select = $this->select();
$select->from(array('t' => 'matable'));

Merci d'avance.

Dernière modification par docaze21 (27-04-2009 17:21:28)

Hors ligne

 

#2 27-04-2009 17:51:00

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: [1.7][Zend_db] SQL_CALC_FOUND_ROWS au lieu de count

Code:

$tbl = New MaTable();
$rowset= $tbl->fetchAll();
count($rowset);

Une seule requête pour obtenir et les données et le nombre d'élément
voir
http://framework.zend.com/manual/fr/zen … wset.fetch
a+jyt

Dernière modification par sekaijin (27-04-2009 17:51:19)

Hors ligne

 

#3 27-04-2009 17:58:11

docaze21
Membre
Date d'inscription: 19-03-2009
Messages: 23

Re: [1.7][Zend_db] SQL_CALC_FOUND_ROWS au lieu de count

Oui mais cela ne me convient pas.
Car cela reviendra a faire 2 requêtes.
Une avec un count et une avec un LIMIT ce que je veux éviter !

Il faudrait que je puisse integrer simplement SQL_CALC_FOUND_ROWS à coté de l'instruction  SELECT

Hors ligne

 

#4 27-04-2009 18:14:14

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: [1.7][Zend_db] SQL_CALC_FOUND_ROWS au lieu de count

avec SQL_CALC_FOUND_ROWS tu fais aussi deux requête une pour le SQL_CALC_FOUND_ROWS et une avec le limit

A+JYT

Hors ligne

 

#5 28-04-2009 08:40:15

matdev
Membre
Date d'inscription: 31-03-2009
Messages: 172

Re: [1.7][Zend_db] SQL_CALC_FOUND_ROWS au lieu de count

pour faire du page par page regarde aussi la méthode de pagination de Zend wink

Hors ligne

 

#6 28-04-2009 08:48:36

docaze21
Membre
Date d'inscription: 19-03-2009
Messages: 23

Re: [1.7][Zend_db] SQL_CALC_FOUND_ROWS au lieu de count

sekaijin a écrit:

avec SQL_CALC_FOUND_ROWS tu fais aussi deux requête une pour le SQL_CALC_FOUND_ROWS et une avec le limit

A+JYT

Non je ne suis pas d'accord avec toi. Tu peux lire ici qu'il n'ya qu'une seule requete (complexe) de faite :
http://dev.mysql.com/doc/refman/5.0/fr/ … tions.html

matdev a écrit:

pour faire du page par page regarde aussi la méthode de pagination de Zend

Zend Paginator ne m'intéresse pas car il sert juste ergonomiquement à ne pas afficher tous les résultats. Mais il n'a aucune possibilité d'améliorer les performances.
Exemple si on a 100000 entrées dans ma table... la requête retournera d'abord tous les enregistrements (ce que je veux éviter) et Zend_Paginator se changera de simplement les afficher page/page

Hors ligne

 

#7 28-04-2009 10:29:17

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: [1.7][Zend_db] SQL_CALC_FOUND_ROWS au lieu de count

bon ok côté moteur ce n'est pas la même chose mais tu fais tout de même deux query et je ne vois pas ce qui t'empêche de faire deux query avec Zend

A+JYT

Hors ligne

 

#8 28-04-2009 10:46:36

docaze21
Membre
Date d'inscription: 19-03-2009
Messages: 23

Re: [1.7][Zend_db] SQL_CALC_FOUND_ROWS au lieu de count

sekaijin a écrit:

bon ok côté moteur ce n'est pas la même chose mais tu fais tout de même deux query et je ne vois pas ce qui t'empêche de faire deux query avec Zend

A+JYT

Je fais peut être 2 requetes, mais la deuxieme requete est minime : SELECT FOUND_ROWS( );
Elle ne représente quasiment rien par rapport à une requete de type SELECT COUNT(id) FROM matable....

J'ai simplement besoin d'integrer SQL_CALC_FOUND_ROWS apres mon SELECT quoi !

Hors ligne

 

#9 28-04-2009 17:34:13

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [1.7][Zend_db] SQL_CALC_FOUND_ROWS au lieu de count

je crois qu'il faut faire un truc du genre:

Code:

$select->from(new Zend_Db_Expr('FOUND_ROWS(...)'));

si j'ai bien compris le problème.

Hors ligne

 

#10 28-04-2009 17:52:08

docaze21
Membre
Date d'inscription: 19-03-2009
Messages: 23

Re: [1.7][Zend_db] SQL_CALC_FOUND_ROWS au lieu de count

Ca ca serait pour la deuxieme reuqte effectivement ...
Mais il y'a toujours un problème pour la création de la première requete hmm

Hors ligne

 

#11 28-04-2009 17:55:52

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [1.7][Zend_db] SQL_CALC_FOUND_ROWS au lieu de count

Quelque chose comme ça?

Code:

$select->from('matable', array(new Zend_Db_Expr('SQL_CALC_FOUND_ROWS', 'id')));

Hors ligne

 

#12 28-04-2009 20:43:03

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: [1.7][Zend_db] SQL_CALC_FOUND_ROWS au lieu de count

query te permet de faire une requête avec SQL je ne vois pas ce qui te pose problème
tu donne toi même la les requête à exécuter
pourquoi tu ne les exécute pas ?
A+JYT

Hors ligne

 

#13 29-04-2009 00:34:47

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [1.7][Zend_db] SQL_CALC_FOUND_ROWS au lieu de count

Il veut l'exécuter avec Zend_Db_Select.

Hors ligne

 

#14 29-04-2009 09:25:47

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: [1.7][Zend_db] SQL_CALC_FOUND_ROWS au lieu de count

et alors qu'on écrive sa requête en string ou avec zend_Db_Select ça ne change rien
A+JYT

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages