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

Requêtes MySQL Discussion :

Les index MySQL


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 19
    Par défaut Les index MySQL
    Bonjour,
    J'ai créé un index (ind_recherche) lors de la création de la table (user) (en MySQL):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INDEX ind_recherche ( prenom_user(10), nom_user(10) )
    mais je ne sais pas comment l'utiliser dans les requêtes SQL (les select) ?

    Merci à vous
    A la prochaine

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    C'est le SGBD qui choisit quel(s) index est ou sont à utiliser en fonction de la requête qu'on lui demande d'exécuter.

    Dans ton cas, si tu fais une recherche sur le prénom, l'index a de fortes chances d'être utilisé. Si c'est sur le nom, cet index ci ne sera pas utilisé car le nom n'est indexé qu'en fonction du prénom. Il faudrait en plus un index sur le nom.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 19
    Par défaut
    Re, merci CinePhil pour votre réponse,

    J'ai crée un script PHP qui permet de rechercher dans la table utilisateur selon le (prenom_user et nom_user),
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM utilisateur WHERE prenom_user LIKE '%****%' AND nom_user LIKE '%****%';
    mais on m'a conseillé d'utiliser un index afin d'accélérer la requête de sélection, c'est pour cela j'ai crée un index :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INDEX ind_recherche ( prenom_user(10), nom_user(10) )
    C'est la première fois que j'utilise les index, et je ne sais pas si je dois modifier la requête SQL (pour utiliser l'index ind_recherche au lieux des champs prenom_user et nom_user), ou la laisser telle quelle !
    A la prochaine.

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Dans le cas précis de la requête que tu présentes, avec un LIKE '%***%', je ne suis pas sûr que l'index soit utilisé.

    Pour le savoir fait un EXPLAIN [ta requête] et tu verras dans le tableau de résultat si un index est utilisé.

    Mais pourquoi utiliser LIKE au fait ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 19
    Par défaut
    Re,
    J'ajoute des explications sur mon problème et mon script PHP, afin que vous sachiez pourquoi j'ai utilisé LIKE :

    --> J'ai un champ de texte (input text) dans lequel l'utilisateur entre une recherche du type : "Nom Prénom", "Prénom Nom", ou seulement le "Nom" ou "Prénom" ....etc
    -->La recherche s'effectuerait sur deux champs : "nom_user" et "prenom_user" de la table "utilisateur".

    -->Pour faire la recherche, j'ai créé un moteur de recherche par mots clés :
    J'ai découpé ma chaine avec la fonction explode() afin de renvoyer un tableau de mots (mots clés), ensuite j'ai fait une boucle qui permet d'ajouter ses mots clés dans la requête SQL, en utilisant les "OR" et les "AND" et le critère de sélection "LIKE".

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. lister les index d'une table mysql
    Par HM56100 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 12/01/2008, 18h40
  2. Réponses: 1
    Dernier message: 04/04/2007, 13h43
  3. Les Index dans MySQL
    Par AzertyH dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/08/2006, 00h12
  4. Question sur les index mysql
    Par Cyrius dans le forum Requêtes
    Réponses: 4
    Dernier message: 08/08/2006, 22h25
  5. Réponses: 6
    Dernier message: 31/03/2006, 17h05

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