Bonsoir à tous,
j’ai un petit soucis de vitesse sur un script php …
en fait je fais une requête sur 3 tables différentes qui me permet de récupérer un prix un libelle et stock d’un produit.
Mon problème est le suivant : lorsque je dois commencer a faire certains tris mon serveur commence a ne plus suivre j’ai l’impression ( au niveau data, un serveur pour iis et un autre pour la BDD ) …
J’ai environ 5000 articles et ma requête prends trop de temps, je souhaiterais donc faire un trigger -> je pense que ca améliorerait la chose mais je ne sais pas du tout comment ca fonctionne en php pour récupérer ce genre de data, tout d’abords est-ce possible ?
Pourriez-vous m’éclairer ? Je ne vois pas d’autre solution a part un trigger ? Est-il possible de cacher certaines requêtes dans SQL SERVER ?
Merci d’avance
Ton truc est compliqué? Je veux dire si tu trie sur une clef primaire, un index, ça n’a pas de raisons d’aller lentement. Que fais ta requête?
Bonsoir Sans-Nom,
voici une de mes requêtes :
$sqlart=“SELECT * FROM article,article_price_list where article_category_id=’$SubcategorieId’ and article_price_list.article_id=article.id and article_price_list.article_price_id=‘0642f92d-d6fd-4f9c-bcb4-9c4755263bfc’”;
$resultart= mssql_query($sqlart);
while ($rowart=mssql_fetch_array($resultart)) {
$idrecup …
//j’affiche donc mes résultats ici !
}
Le problème de cette requête c’est qu’il me manque les taxes sur les produits qui se trouvent dans une table taxe_list et la quantité du stock qui lui est encore dans une autre table
Donc si j’enchaine avec un select taxe_list where article_id=$idrecup ca relance une requête puis encore une seconde pour les quantités je dois avouer que je suis un peu perdu !
Je ne vois pas comment je dois faire ma requête …
voici ce que ca peut donner pour le moment :
www.bcmc.be:84…
Edité le 03/09/2007 à 23:57
Je te suggère pour commencer l’utilisation d’INNER JOIN pour rendre plus propre la requête :
SELECT *
FROM article A
INNER JOIN article_price_list APL ON A.article_id = APL.article_id
WHERE A.article_category_id = '$SubcategorieId'
AND article_price_list.article_price_id='0642f92d-d6fd-4f9c-bcb4-9c4755263bfc'"
ORDER BY A.article_id DESC
Pour le reste : tu as l’analyseur de requêtes pour optimiser, et tu peux aussi limiter le nombre de résultats lus (si tu n’as besoin que les 50 premiers par exemple, etc).
ok je te remercie j’ai lu un petit peu cette nuit ce fameux inner join qui semble être la solution …
Malheureusement je ne connais pas cette syntaxe je vais étudier la question
Merci beaucoup en tout cas
J’ai encore une petite question je pense que tu sauras m’aider
le inner join fonctionne bien çà à l’air même plus rapide par contre j’ai un autre soucis ma table article_taxe_list contient plusieurs ligne pour le même article …
Donc je me retrouve avec des doublons dans le résultat …
J’ai donc utilisé un group by pour les taxe mais je n’arrive pas a fusionner les 2 requêtes : /
SELECT A.id,A.code,A.name,STL.value,APL.normal_price
FROM Article A
INNER JOIN stock_location_list STL ON A.id=STL.article_id
INNER JOIN article_price_list APL ON A.id=APL.article_id
INNER JOIN article_taxe_list ATL ON A.id=ATL.article_id
where article_price_id='0642F92D-D6FD-4F9C-BCB4-9C4755263BFC'
and stock_location_id='95DE876F-C38C-471B-B204-71246D913356'
UNION
SELECT article_id,price
FROM article_taxe_list
GROUP BY article_id,price
Merci d’avance