Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & Oracle
PHP & Oracle Forum d'entraide sur Oracle avec PHP. Avant de poster -> FAQ Oracle et Cours Oracle
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 11/09/2007, 13h21   #1
Invité de passage
 
Inscription : septembre 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 3
Points : 1
Points : 1
Par défaut optimisation php mysql

Bonjour,

j'ai un probleme d'optimisatin de requete, voir d'architecture mysql.

J'ai une serie de donnees pour chaque personne dans une entreprise informatique.
Pour chaque entree j'ai une bonne vingtaine de champs (une technologie informatique) avec un niveau associé(expert, bon, moyen, notions=
Par exemple :


Serge : oracle (expert) / unix (expert) / c (bon)/ php (notions) / sybase (notions) / powerbuilder (bon)/ etc ...
antoine: unix(bon)/ c(bon) / visuals basic (bon)/ etc ...
stephane : php (expert)/ mysql (moyen) / linux etc ...

Imaginez une base de données consequante (plusieurs milliers de noms) et une vingtaine de champs chacun (avec a chaque fois un niveau entre parenthese ou dans un autre champs).

j'ai un outil de recherche mais je souhaite classer par pertinence ... si je recherche "oracle" chez un employé, je souhaite avoir en premiere reponse les experts, puis le sbons, puis le moyens, puis les notions. Si je recherche oracle+unix, je souhaite les experts dans les deux, puis expert/bon, puis etc....

Le soucis est le temps de traitement pour obtenir les reponses classees puisque chaque terme recherchés (oracle, unix etc ...) peuvent-etre dans n'importe quel champs (1 a 20 ) .... donc il faut tester tout les champs(c'ets le plus long) , extraire le niveau et comparer (la dessus pas de soucis apriori) ...
quelqu'un a -t-il une idee ?

J'ai pense creer une base avec tous les termes que je peux rechercher et noter le niveau du candidat pour chaque (une sorte d'index)... il y aura beaucoup de termes mais au moins ils seront toujorus au meme endroit et plus accessibles.

Est-ce une solution ? y-a-til plus simple ? une astuce ?


Merci d'avance,
Stephane.
Configuration: Windows XP
Internet Explorer 6.0
drclic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2007, 13h56   #2
Membre habitué
 
Avatar de Amnesiak
 
Geoffray
Inscription : août 2002
Messages : 137
Détails du profil
Informations personnelles :
Nom : Geoffray
Âge : 31
Localisation : Belgique

Informations forums :
Inscription : août 2002
Messages : 137
Points : 122
Points : 122
Bonjour,

Si tu as la possibilité de modifier la structure de la base de données, je pense que revoir la manière dont elle est modélisée serait une bonne chose. Je verrai plutôt une séparation entre les utilisateurs et leurs compétences, matérialisée par 2 tables distinctes. La table des compétences ne comporterait que 3 champs :
  • l'identifiant de l'utilisateur, pour la jointure
  • le domaine de compétence (oracle, unix, php, ...)
  • le niveau (10=expert, 5=moyen, 1=notions, 0=nul, ...)
Tu aurais donc une vingtaine de lignes dans cette table, au lieu d'une vingtaine de colonnes dans ta table des utilisateurs. La clé primaire pourrait être composée des 2 premiers champs ce qui t'assure l'unicité d'un domaine par utilisateur, et le fait d'utiliser une valeur numérique pour stocker le niveau te permet beaucoup plus de souplesse pour tes classements.

En espérant que cela t'apporte quelques idées...
A+
Amnesiak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2007, 15h48   #3
Membre Expert
 
Inscription : octobre 2002
Messages : 1 141
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2002
Messages : 1 141
Points : 1 204
Points : 1 204
Envoyer un message via MSN à Raideman
Je suis du meme avis, je te conseillerai d'adapter la structure à tes besoins et d'essayer de pas faire un fourre tout dans les champs (sinon à quoi bon une bdd?). Car en terme de performance et de facilité de gestion de ton information (tri, recherche, etc...), ce sera le jour et la nuit.
Raideman est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h19.


 
 
 
 
Partenaires

Hébergement Web