Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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
Bonjour,
Je te conseil d'utiliser ORM Doctrine,c'est plus mieux et plus professionnel.
A+.Nll
____________________
Hors ligne
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
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
Hors ligne
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
je ne vois pas comment tu peux ajouter ça directement
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
$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
Pages: 1