Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/08/2011, 20h37   #1
Invité régulier
 
Homme Outmane Sekkah
Étudiant
Inscription : août 2011
Messages : 19
Détails du profil
Informations personnelles :
Nom : Homme Outmane Sekkah
Localisation : Maroc

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 19
Points : 8
Points : 8
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 :
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
outmane16 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 00h09   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 019
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 019
Points : 18 304
Points : 18 304
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/08/2011, 15h02   #3
Invité régulier
 
Homme Outmane Sekkah
Étudiant
Inscription : août 2011
Messages : 19
Détails du profil
Informations personnelles :
Nom : Homme Outmane Sekkah
Localisation : Maroc

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 19
Points : 8
Points : 8
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 :
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 :
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.
outmane16 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 18h00   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 019
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 019
Points : 18 304
Points : 18 304
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 20h53   #5
Invité régulier
 
Homme Outmane Sekkah
Étudiant
Inscription : août 2011
Messages : 19
Détails du profil
Informations personnelles :
Nom : Homme Outmane Sekkah
Localisation : Maroc

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 19
Points : 8
Points : 8
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".
outmane16 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h55.


 
 
 
 
Partenaires

Hébergement Web