|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
syrx20 WRInaute occasionnel

Inscrit le: 12 Aoû 2005 Messages: 171
|
Posté le : Jeu Mai 15, 2008 10:31 Sujet du message: Optimiser une requete SQL |
|
|
Bonjour,
J'ai 3 tables TOURNOI,PERSONNE et INSCRIPTION et je cherche à savoir à quel tournoi la personne 1 n'est pas encore inscrit.
J'ai la requete suivante :
SELECT t.id_tournoi FROM tournoi t LEFT JOIN inscription i ON (t.id_tournoi = i.id_tournoi AND i.id_personne=1) WHERE i.id_tournoi is null
ça fonctionne mais le problème c'est qu'elle prend 30 secondes pour renvoyer un résultat
Quelqu'un aurait il une solution pour optimiser cela?
Merci |
|
| |
|
 |
seebz WRInaute impliqué

Inscrit le: 15 Avr 2007 Messages: 266
|
Posté le : Jeu Mai 15, 2008 10:47 Sujet du message: Optimiser une requete SQL |
|
|
A tout hasard :
| Code: |
SELECT t.id_tournoi
FROM tournoi t
WHERE t.id NOT IN (
SELECT i.id
FROM inscription i
WHERE i.id_personne=1
) |
|
|
| |
|
 |
audit.referencement WRInaute occasionnel

Inscrit le: 16 Fév 2008 Messages: 121
|
Posté le : Jeu Mai 15, 2008 10:48 Sujet du message: Optimiser une requete SQL |
|
|
| Sans avoir l'architecture de tes tables, ça va être très très dur de t'aider. |
|
| |
|
 |
syrx20 WRInaute occasionnel

Inscrit le: 12 Aoû 2005 Messages: 171
|
Posté le : Jeu Mai 15, 2008 10:48 Sujet du message: Optimiser une requete SQL |
|
|
| Merci pour ta réponse seebz mais j'ai déjà essayé et c'est pareil |
|
| |
|
 |
Bacteries WRInaute passionné

Inscrit le: 27 Mai 2004 Messages: 951 Localisation: France - Nantes
|
Posté le : Jeu Mai 15, 2008 11:06 Sujet du message: Optimiser une requete SQL |
|
|
La solution de seebs me semble être ce que tu peux faire de mieux. Tes tables ont beaucoup d'enregistrement?
Tu as des index? |
|
| |
|
 |
jcaron WRInaute impliqué

Inscrit le: 13 Fév 2004 Messages: 481 Localisation: Paris
|
Posté le : Jeu Mai 15, 2008 11:17 Sujet du message: Re: Optimiser une requete SQL |
|
|
| syrx20 a écrit: |
J'ai 3 tables TOURNOI,PERSONNE et INSCRIPTION et je cherche à savoir à quel tournoi la personne 1 n'est pas encore inscrit.
J'ai la requete suivante :
SELECT t.id_tournoi FROM tournoi t LEFT JOIN inscription i ON (t.id_tournoi = i.id_tournoi AND i.id_personne=1) WHERE i.id_tournoi is null
|
Ca veut dire que tu as une entrée dans inscription pour chaque paire (tournoi,personne)? A moins qu'au bout du compte tout le monde (ou presque) doive être inscrit à tous les tournois, ça ne me paraît pas forcément être un très une bonne idée.
| syrx20 a écrit: |
ça fonctionne mais le problème c'est qu'elle prend 30 secondes pour renvoyer un résultat
Quelqu'un aurait il une solution pour optimiser cela?
|
S'assurer qu'il y a un index sur id_personne pour la table inscription (et évidemment un index sur id_tournoi pour la table tournoi).
Jacques. |
|
| |
|
 |
syrx20 WRInaute occasionnel

Inscrit le: 12 Aoû 2005 Messages: 171
|
Posté le : Jeu Mai 15, 2008 11:22 Sujet du message: Optimiser une requete SQL |
|
|
Honte sur moi...en effet, il manquait un index sur la table inscription
Merci Bacteries |
|
| |
|
 |
jarreweb WRInaute occasionnel

Inscrit le: 12 Sep 2003 Messages: 178 Localisation: saint-etienne
|
Posté le : Jeu Mai 15, 2008 13:46 Sujet du message: Optimiser une requete SQL |
|
|
| et le temps de réponse avec les index, ca donne quoi ? |
|
| |
|
 |
syrx20 WRInaute occasionnel

Inscrit le: 12 Aoû 2005 Messages: 171
|
Posté le : Ven Mai 16, 2008 11:42 Sujet du message: Optimiser une requete SQL |
|
|
c instantané  |
|
| |
|
 |
| |
|
|