IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Recherche sur trés grosse base de donnée


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 20
    Points : 12
    Points
    12
    Par défaut Recherche sur trés grosse base de donnée
    Bonjour

    J'ai développé un formulaire dynamique pour mon site web (autocomplete).
    La page de recherche (appelée via ajax) est trop longue a mon gout à s'afficher (environ 3,5 secondes).

    Je voudrais savoir s'il y a une technique ou un langage annexe a utiliser qui pourrait accélérer le processus.

    Voici un extrait du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $req=mysql_query("SELECT name FROM table WHERE name LIKE '%".$keyword."%'");
    while ($data=mysql_fetch_array($req)) {
    echo $data['name'].'<br>';
    }
    Ma table contient environ 900 000 entrées.

    Merci pour vos lumières

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Une recherche commençant par % va forcement être plus longue.
    Dans l'optique d'une autocomplétion, les premières lettres qu'on saisie sont bonnes, il sera plus logique d'avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LIKE '" . $keyword."%'"
    Ainsi avec une index sur ta colonne "name" la recherche devrait être très rapide.

    Au passage l'extension mysql est obsolète, utilise PDO.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Salut ! Merci pour ta réponse !

    Aprés réflexion je ne peux pas enlever le % du début. Il s'agit d'une base de donnée de lieux touristiques. Et par exemple si la personne tape "Notre Dame" il doit pouvoir voir "Cathédrale Notre Dame de Paris".

    Je ne pense pas qu'un index sur le champ "name" soit une bonne idée. Ma table contient 40 colonnes et déja 2 index (status, pays)...

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je ne vois pas le problème à ajouter un index. Cependant avec un recherche commençant par %, l'index standard a peu d’intérêt.
    Tu peux par contre t'interesser aux index FULLTEXT.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Très grosses bases de données en XML
    Par Childerique dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 18/11/2014, 12h07
  2. Utiliser LEFT JOIN sur une grosse base de données
    Par bractar dans le forum Requêtes
    Réponses: 20
    Dernier message: 11/01/2014, 07h32
  3. rechercher rapidement sur une très grande base de données access
    Par unja2010 dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/06/2013, 15h16
  4. Réponses: 10
    Dernier message: 19/04/2013, 11h04
  5. [Crystal] Performance sur grosses base de données
    Par Nico118 dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 14/11/2003, 15h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo