Précédent   Forum des professionnels en informatique > Bases de données > Décisions SGBD
Décisions SGBD Forum de décisions sur le choix en bases de données. Le Comparatif
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 08/02/2005, 16h28   #1
Futur Membre du Club
 
Inscription : octobre 2002
Messages : 43
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 43
Points : 16
Points : 16
Par défaut optimisation requête

vaut mieux faire une requête comme ceci :

select * from aaaa where identifiant in (1, 2, 3, 4, 5, ... 995, 996, 997, 998, 999, 1000)

ou 10 requête comme ceci :

(select * from aaaa where identifiant in (1, 2, ..., 9, 10)) X 10

Qu'elle est la meilleure méthode ?

Est-ce vrai que le left join fait ramer le seveur mysql ?
alex2205 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2005, 16h34   #2
Nouveau Membre du Club
 
Inscription : juin 2003
Messages : 38
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 38
Points : 32
Points : 32
Salut,
Si tes identifiants se suivent (1,2,3,4,5,6,7,...900,901,902,903) comme a l'air de montrer ton exemple, il vaut mieux faire ca:

select * from aaaa where identifiant between valeur_min and valeur_max...

A+
Stoune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2005, 17h28   #3
Futur Membre du Club
 
Inscription : octobre 2002
Messages : 43
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 43
Points : 16
Points : 16
oui, mais j'ai mis ces chiffres comme exemple, en réalité il n'y a aucune relation entre chaque chiffre.

l'exemple de requête est :

select * from aaaa where identifiant in (5545645, 564464, 415245, 251876123, 42561325, ... 95645646, 89723134, 6467898, 54615697, 54615611, 782319)

c'est dire avoir 1 seule requête avec 1000 identifiant dans le in ou vaut mieux faire 10 requête avec 100 identifiants différents dans le in ?
alex2205 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2005, 10h28   #4
Futur Membre du Club
 
Inscription : octobre 2002
Messages : 43
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 43
Points : 16
Points : 16
Citation:
Envoyé par alex2205
oui, mais j'ai mis ces chiffres comme exemple, en réalité il n'y a aucune relation entre chaque chiffre.

l'exemple de requête est :

select * from aaaa where identifiant in (5545645, 564464, 415245, 251876123, 42561325, ... 95645646, 89723134, 6467898, 54615697, 54615611, 782319)

c'est dire avoir 1 seule requête avec 1000 identifiant dans le in ou vaut mieux faire 10 requête avec 100 identifiants différents dans le in ?
Quelle est la méthode la plus optimiser ?

Je pose cette question car dans mon bureau, je suis le seule à soutenir qu'il vaut mieux faire une requête avec un in de 1000 identifiant que 10 requête avec un in de 100 identifiant.
alex2205 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2005, 14h01   #5
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Effectivement, le IN est meilleur, mais je crains que tu rencontres un autre problème : la limite dans le nombre de valeur accepté par IN

L'idéal serait de créer une table avec la liste des valeurs et faire une bonne vieille jointure
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2005, 14h15   #6
Futur Membre du Club
 
Inscription : octobre 2002
Messages : 43
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 43
Points : 16
Points : 16
Merci
alex2205 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 00h46.


 
 
 
 
Partenaires

Hébergement Web