|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Développeur informatique Inscription : juin 2011 Messages : 2 ![]() |
Bonjour, je débute en sql et j'ai une requete qui lorsque je la met sur un serveur en reseau me donne des temps trop long d'execution... pouvez vous m'aider à optimliser merci le code :
Code :
|
||
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
SVP lisez les règles d'utilisation du forum
|
|
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
Bonjour,
il va falloir ré-écrire entièrement votre requête. Lisez cet article : http://sqlpro.developpez.com/cours/sqlaz/jointures/ Puis refaites correctement vos jointure et montrez-nous la nouvelle requête. Dans la clause where dégagez entièrement vos sous-requête qui n'ont pas lieu d'être (ce sont vos jointure !!) Le group by est-il obligatoire ? à quoi sert-il ? Avez vous des index sur : - vos colonnes de jointure - la colonne AF1000_Affaire.Utilisateur |
|
|
00
|
|
|
#4 |
|
Membre expérimenté
![]() Inscription : octobre 2002 Messages : 654 ![]() |
Bonjour,
Quel est le SGBD? Access?, SQL server,?MySQL? J'ai l'impression qu'il y a des corrections à faire au niveau des jointure et que le group by "sert" à dédoublonner parcequ'il doit y avoir des produits cartésiens. Soazig |
|
|
00
|
|
|
#5 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 954 ![]() |
Utilisez aussi des alias de tables, parce que là on atteint les sommet de l'horreur et de l'illisibilité !!!!
Avez vous un jour suivi un cours de SQL ????? A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#6 | ||
|
Membre expérimenté
![]() Inscription : octobre 2002 Messages : 654 ![]() |
Bonjour,
Comme dit précédemment tu ne nous donnes pas la structure de tes tables, et leur relations (foreign key), tu ne nous explique pas ce que tu veux obtenir. Tu nous donnes juste une requête dont tu nous dit qu'elle est lente. En plus elle n'est pas indentée correctement. Les remarques précédentes ne sont pas méchantes, mais pour t'aider il faut que tu nous aides un peu aussi Je viens de réécrire ta requête à l'aveugle en utilisant les jointures normalisées et en imaginant ce que tu voulais faire. Franchement avec une boule de cristal j'y serai mieux arriver. Voilà ce à quoi je suis arrivée Code :
Pour indenter une requête qui ne l'est pas et que je n'ai pas écrite j'utilise. http://www.sqlinform.com/free_online_sw.html Le site de sqlpro déjà mentionné plus haut est super pour apprendre le SQL, c'est là que je me suis perfectionnée. Sa lecture te ferai le plus grand bien [edit]Le fonctionnement de ta table Parametre semble bizarre, les autres jointures semble classiques, donc vérifie ce qui doit être fait pour la table paramètre[/edit] je pense. Courage Soazig |
||
|
|
00
|
|
|
#7 | ||
|
Invité de passage
![]() Développeur informatique Inscription : juin 2011 Messages : 2 ![]() |
Merci tout d'abord a vos réponses, aprés reflexion j'ai regardé vos tuto et revu la requete. Mais je n'ai pa mis de jointure.
Pour répondre à vos questions : Je suis sur base Hyperfile SQL (windev) ma nouvelle requete : Code :
AF100_Affaire et AF1000_Refinanceur (AF1000_Affaire.Affaire et AF1000_Refinanceur.Affaire) ainsi que : AF100_Affaire et SE1000_CLient (AF1000_Affaire.Client et SE1000_Client.client ) ainsi que : AF100_Affaire et SI1000_Utilisateur (AF100_Affaire .utilisateur et SI1000_Utilisateur.utilisateur) ainsi que : AF100_Affaire et PA1000_Parametre(AF100_Affaire.Statut_Affaire et AF1000_Affaire.Statut_Affaire ) Pensez-vous qu'il ya une autre façon de faire je ne suis vraiment pas à l'aise avec les jointures Merci d'avance |
||
|
|
00
|
|
|
#8 | ||
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
pour les jointures utilisez ce modèle
Code sql :
If faut aussi un index pour la colonne indiquée dans le ORDER BY (AF1000_Affaire.Affaire) en gros tous les éléments qui interviennent dans la clause WHERE et ORDER BY |
||
|
|
00
|
|
|
#9 | |
|
Membre expérimenté
![]() Inscription : octobre 2002 Messages : 654 ![]() |
Bonjour,
Citation:
Prenons un exemple AF100_Affaire et AF1000_Refinanceur (AF1000_Affaire.Affaire et AF1000_Refinanceur.Affaire) Est-ce que Affaire est clé primaire de AF100_Affaire? Est-ce que Affaire est clé étrangère de AF1000_Refinanceur? Est-ce qu'il y a un index sur Affaire dans AF1000_Refinanceur? Sinon il y a beaucoup de progrès dans ta requête. Cordialement Soazig |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com