Recherche FULLTEXT

lagombe Messages postés 45 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 mars 2008 - 5 sept. 2005 à 15:55
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 7 sept. 2005 à 17:21
Bonjour à tous,



Voilà, j'utilise dans une base MySQL une recherche fulltext en
utilisant la syntaxe 'MATCH... AGAINST ('... IN BOOLEAN MODE') mais je
trouve cette recherche monstrueusement longue alors que lorsque je la
tape directement (phpMyAdmin) elle me renvoie immédiatement les
résultats... Une idée?

lagombe

9 réponses

J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
5 sept. 2005 à 19:53
Une idée !?!?!? Fait afficher ta requete avant de l'envoyer!

Défois le problème vient d'une erreur de frappe dans l'une des variables PHP constituant la requete.



exemple, si t'ecris ça, t'es foutu!

$mot = "salut";

"SELECT * FROM uneTable WHERE descritpion LIKE'%$mto%";



=> $mto est nul


<hr size="2" width="100%">6 C pa ça Fo L'dir, Pi 6 C ça Fo L'Dir oci... Br'F 10t le !!!
Doc officielle de PHP en français -
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
5 sept. 2005 à 20:26
Salut,



quel est ton code ?

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
lagombe Messages postés 45 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 mars 2008
6 sept. 2005 à 08:48
>J_G : l'erreur ne vient pas de la syntaxe de la requête car elle me
renvoie les bons enregistrements mais la page de résultats est longue à
s'afficher...

>Antho : rien de particulier, j'ai plusieurs clauses where que je
stocke dans un tableau (mais le problème arrive même quand il n'y a que
la requête sur ce champ là) comme ça :

...

if(strlen($_POST['observation_can'])>0){

$a_where[] =
"match(o.observation) against('".$_POST['observation_can']."' in
boolean mode)";

}

...

puis je crée ma requête finale :



// création de la requête finale

bd_connection();

if(count($a_where)>0){

$sql = "select distinct
c.num_can, c.civilite_can, c.nom_can, c.prenom_can,
c.metier_can from candidats as c left join observation_can as o
on c.num_can=o.can";

$sql .= " where ".implode(" and ", $a_where)." order by ";

if (!isset($_POST['order_by'])) $_POST['order_by']='nom_can';

$sql = str_replace("\", "", $sql);

if (!isset($_POST['order_tr'])) $_POST['order_tr']='asc';

$res = mysql_query($sql.$_POST['order_by']." ".$_POST['order_tr']);

$num = mysql_num_rows($res);

}

...

requête que j'affiche en faisant au finale une boucle avec un while et la fonction mysql_fetch_array...

merci de votre aide...



lagombe
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
6 sept. 2005 à 19:13
Bah quand tu dis "monstrueusement longue" ça veut dire combien de temps
pour afficher la page ? tu peux utiliser aussi les fonctions dispos sur
ce site (pas mal de sources) permettant d'indiquer le temps de
génération d'une page, tu t'en sers non pas pour la page entière mais
pour la requête, et ensuite pour la page entière (tu sauras si ça vient
de ta requête ou pas)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
6 sept. 2005 à 20:37
Salut,

je tombe un peu nus... Ta requète n'est pas longue... Tu es bien loin
d'atteindre un seuil de complexité suffisant pour faire brouter le
serveur MySQL. En plus tu dis que la requète est rapide quand
executée directement dans PhpMyAdmin...



Alors, le problème ne doit pas venir de ta requète!



Autre piste si tu utilise EasyPHP sous Windows, mais j'ai des doutes :

Peut-être as-tu déjà remarqué que l'acces à la base MySQL bloque
parfois... Sans qu'on puisse vraimement savoir pourquoi. EasyPHP
mentionne ce problème.



Je ne vois rien d'autre... Désolé

0
lagombe Messages postés 45 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 mars 2008
7 sept. 2005 à 09:26
Quand je dis "monstrueusement" longue
c'est surtout en comparaison de son affichage quand je la tape dans
PhpMyAdmin... sinon elle doit mettre autour de 10 secondes... sinon je
vais regarder avec les outils dont me parlais Antho... merci à vous...

lagombe
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
7 sept. 2005 à 16:51
si l'affichage est presque instantanné dans phpmyadmin ça vient de ton code php mais pas de la requête :-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
lagombe Messages postés 45 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 mars 2008
7 sept. 2005 à 17:14
donc ton code php peut ralentir l'éxécution de tes requêtes... mmhhh...
donc si tu avais trois conseils à donner dans ce sens que dirais-tu?
quels sont les choses à éviter le plus souvent?

merci encore pour ton intérêt...

lagombe
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
7 sept. 2005 à 17:21
non le code php ne ralentit pas l'exécution des requêtes (c'est
indépendant) mais tu peux très bien faire une bonne requête mysql et un
code php pourri derrière qui va te faire une boucle infinie...

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
Rejoignez-nous