Requete plus rapide que celle la ?
12 messages
• Page 1 sur 1
Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics
- alex2323
- Nouveau WRInaute

- Messages: 21
- Inscription: 7 Avr 2008
Requete plus rapide que celle la ?
Bonjour, je voulais savoir qu'elle est la requête la plus efficace ?
Y a t-il une meilleur solution ?
SELECT id
FROM produits
WHERE ref in (SELECT ref FROM stock)
AND fournisseur=2
SELECT p.id, s.prix
FROM produits p LEFT JOIN stock s ON (p.ref=s.ref)
WHERE p.fournisseur=2
AND p.ref=s.ref
Je vous remercie par avance.
Y a t-il une meilleur solution ?
SELECT id
FROM produits
WHERE ref in (SELECT ref FROM stock)
AND fournisseur=2
SELECT p.id, s.prix
FROM produits p LEFT JOIN stock s ON (p.ref=s.ref)
WHERE p.fournisseur=2
AND p.ref=s.ref
Je vous remercie par avance.
- French Fred
- WRInaute occasionnel

- Messages: 265
- Inscription: 12 Fév 2004
Bonjour
Cela serait plus correct et eventuellement plus performant dans la mesure ou vous avez ajoute des clefs sur certains champs.
- Code: Tout sélectionner
SELECT p.id, s.prix
FROM produits p INNER JOIN stock s ON p.ref=s.ref
WHERE p.fournisseur=2
Cela serait plus correct et eventuellement plus performant dans la mesure ou vous avez ajoute des clefs sur certains champs.
-

magicaxe - WRInaute discret

- Messages: 151
- Inscription: 18 Oct 2004
Toujours avec des index, tu doit utiliser un OUTER JOIN:
- Code: Tout sélectionner
SELECT p.id
FROM produits p LEFT JOIN stock s ON p.ref=s.ref
WHERE p.fournisseur=2 AND s.ref IS NULL
- alex2323
- Nouveau WRInaute

- Messages: 21
- Inscription: 7 Avr 2008
Je réouvre ce sujet car j'ai un autre problème pour les requêtes.
J'ai une table avec 120000 enregistrements et je doit effectuer un update qui doit prendre la valeur d'un champ A et le séparé en 2 puis mettre une partie dans le champ A et l'autre dans le B.
La requête que j'ai faite est la suivante:
Mais c'est super long (j'ai l'impression que ça fini jamais)! Surtout pour 120 000 produits... J'ai pourtant mis id en clé primaire et four en index. Avez vous une solution ? Merci
J'ai une table avec 120000 enregistrements et je doit effectuer un update qui doit prendre la valeur d'un champ A et le séparé en 2 puis mettre une partie dans le champ A et l'autre dans le B.
La requête que j'ai faite est la suivante:
- Code: Tout sélectionner
$four = 1;
$res = mysql_query("select id, cat from produit where four=".$four);
while($a = mysql_fetch_array($res)){
echo $a[1]." - ";
$cat = substr($a[1], 0, 2);
echo $cat." - ";
$cat1 = substr($a[1], -2, 2);
echo $cat1."<br/>";
mysql_query("UPDATE produit SET cat='".$cat."', cat1='".$cat1."' where four=".$four);
}
Mais c'est super long (j'ai l'impression que ça fini jamais)! Surtout pour 120 000 produits... J'ai pourtant mis id en clé primaire et four en index. Avez vous une solution ? Merci
- petit-ourson
- WRInaute impliqué

- Messages: 855
- Inscription: 31 Mai 2004
En faisant tout en SQL et un seul update sans passer par du PHP avec la fonction SUBSTRING.
- alex2323
- Nouveau WRInaute

- Messages: 21
- Inscription: 7 Avr 2008
Comment écrire la requête dans ce cas ?
J'ai essayé çà, mais ça met cat et cat1 à vide.
J'ai essayé çà, mais ça met cat et cat1 à vide.
- Code: Tout sélectionner
$res = mysql_query("select id, cat from produit where four=".$four);
while($a = mysql_fetch_array($res)){
mysql_query("UPDATE produit SET cat=SUBSTR(cat,0,2), cat1=SUBSTR(cat,2,2) where four=".$four);
}
- alex2323
- Nouveau WRInaute

- Messages: 21
- Inscription: 7 Avr 2008
En faite je me suis trompé, c'est pas four="$four, c'est id=".$id
Donc je pense avoir besoin de la partie php.
Oui, c'est bien a cause du 'cat' que je n'arrive pas a le faire.
Y a t-il une astuce pour ça ?
C'est bien à cause du four qui m'étais du temps, là c'est moins long. (avec le php )
Le seul problème qui reste c'est, comment utiliser directement substr dans mon update ? Pour que je puissent retiré le php
Donc je pense avoir besoin de la partie php.
Oui, c'est bien a cause du 'cat' que je n'arrive pas a le faire.
Y a t-il une astuce pour ça ?
- Code: Tout sélectionner
$res = mysql_query("select id, cat from produit where four=".$four);
while($a = mysql_fetch_array($res)){
mysql_query("UPDATE produit SET cat=SUBSTR(cat,0,2), cat1=SUBSTR(cat,2,2) where id=".$a[0]);
}
C'est bien à cause du four qui m'étais du temps, là c'est moins long. (avec le php )
Le seul problème qui reste c'est, comment utiliser directement substr dans mon update ? Pour que je puissent retiré le php
-

Leonick - WRInaute accro

- Messages: 19598
- Inscription: 8 Aoû 2004
juste ça
- Code: Tout sélectionner
UPDATE produit SET cat=SUBSTR(cat,0,2), cat1=SUBSTR(cat,2,2)
12 messages
• Page 1 sur 1
Formation recommandée sur ce thème :
Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- requete dans une requete
- Referencment rapide
- Indexation rapide
- Le Backorder le plus rapide
- référencement rapide
- Plus rapide que where
- MSN plus rapide que GG
- Google rapide ?
- dmoz + rapide ?
- Gigablast rapide
- Créer un site plus rapide
- GG plus rapide que son ombre ...
- Changement de PR très rapide !
- Constatation : indexation plus rapide
- indexation ultra rapide...
- Google API : guide de développement de l'API Google - 20-09-2002
- Nombre moyen de mots par requête : statistiques AOL Août 2006 - 10-08-2006
- Nombre de clics dans les pages de résultats : statistiques AOL Août 2006 - 11-08-2006
- Google Chrome : nouvelle version beta plus rapide - 18-03-2009
- Informations sur l'infrastructure technique de Google - 01-11-2004
- Description des liens sponsorisés Google AdWords - 19-09-2002
- Google indexe le Flash - 28-04-2004
- Google Chrome 5 est super rapide ! - 07-05-2010
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
