Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 22-02-2010 13:08:47

timotheerolin
Nouveau membre
Date d'inscription: 02-11-2009
Messages: 4

MYSQL : USE INDEX, IGNORE INDEX et FORCE INDEX avec Zend Db Select

Bonjour,
sur une de mes base de données avec pas mal de jointures et de conditions l'optimiseur de mysql perd les pédales et choisit les mauvais index (du à un calcul des cardinalités aproximatif sur les tables innodb). La solution que j'ai trouvé est d'indiquer à l'optimiseur quels index utiliser grâce aux instructions USE INDEX, IGNORE INDEX et FORCE INDEX. Seulement je ne vois pas comment faire avec la classe select de Zend Db (et j'ai vraiment besoin d'utiliser cette classe). Quelqu'un aurait-il une solution ?
Merci d'avance.

Dernière modification par timotheerolin (22-02-2010 13:09:33)

Hors ligne

 

#2 22-02-2010 13:12:30

elec
Membre
Date d'inscription: 16-10-2009
Messages: 118

Re: MYSQL : USE INDEX, IGNORE INDEX et FORCE INDEX avec Zend Db Select

Bonjour,

Je te conseil d'utiliser ORM Doctrine,c'est plus mieux et plus professionnel.

A+.Nll
____________________

Hors ligne

 

#3 22-02-2010 15:37:21

timotheerolin
Nouveau membre
Date d'inscription: 02-11-2009
Messages: 4

Re: MYSQL : USE INDEX, IGNORE INDEX et FORCE INDEX avec Zend Db Select

Ok merci de ton conseil. Je vais regarder ça. Mais ta réponse sous-entend donc que ce n'est pas possible avec Zend Db Select ? Je t'avoue que ça m'aurait arrangé car j'aimerais autant ne pas avoir à utiliser encore une librairie supplémentaire.

Hors ligne

 

#4 22-02-2010 16:09:50

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: MYSQL : USE INDEX, IGNORE INDEX et FORCE INDEX avec Zend Db Select

avec Zend_Db_Select, tu peux toujours utiliser Zend_Db_Expr pour insérer ce que tu veux dans ta requête
http://framework.zend.com/manual/1.10/e … elect.html

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#5 24-02-2010 11:45:00

timotheerolin
Nouveau membre
Date d'inscription: 02-11-2009
Messages: 4

Re: MYSQL : USE INDEX, IGNORE INDEX et FORCE INDEX avec Zend Db Select

Merci pour Zend_Db_Expr. Ça paraissait être la bonne solution mais ça ne fonctionne pas pour le nom de la table.
Voici ce que je fais et j'ai inévitablement une erreur :
$query->from (new Zend_Db_Expr ('media IGNORE INDEX(_user)'), '*');

Dernière modification par timotheerolin (24-02-2010 11:45:21)

Hors ligne

 

#6 24-02-2010 18:35:50

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

Re: MYSQL : USE INDEX, IGNORE INDEX et FORCE INDEX avec Zend Db Select

je ne vois pas comment tu peux ajouter ça directement

Code:

new Zend_Db_Expr ('media IGNORE INDEX(_user)')

vas te créer le chaine adéquate pour ta base mais ça ne l'ajoute pas dans la requête

je ne vois qu'une solution

Code:

$sql = $select->assemble() . new Zend_Db_Expr ('media IGNORE INDEX(_user)')

qui te retourne la string de ta requête mais je ne suis pas sur que ça marche comme ça

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