Login mot de passe
Optimisation code... [forum - SQLManagerX]

Parcourir ce sujet :   1 Utilisateur(s) anonymes





Optimisation code...
apprenti-animateur
Inscrit:
2011/2/23 18:59
Messages: 87
Hors Ligne
Bonjour,

Franck Bugnet, manager reconverti en freelance sur le tard, par passion, j'ai utilisé SQLManagerX pour développer depuis 1 an trois applications Windev connectées avec des bases SQL de la plateforme e-commerce Prestashop.
Merci encore et encore pour cet outil fantastique.
Tout fonctionne très bien, mais mes applis sont bien trop lentes des que les bases augmentent et le temps est venu d'optimiser mon code.
En particulier PrestaPricing, mon appli phare dont vous pouvez voir des vidéos de démo ici:
http://www.myphotorescue.com/lang-fr/ ... ance-rapide-produits.html

Je sèche sur la solution à apporter pour le cas suivant:

Je rempli une table mémoire, présentant des produits, avec SQLCtable, lisant le contenu de la table SQL "ps_product" :

I_Product:SQLCtable("TABLE_ps_product","id_category_default,id_product,reference,reference,ean13,upc,supplier_reference,quantity,minimal_quantity,out_of_stock,out_of_stock,location,wholesale_price,unity,unit_price_ratio,unit_price_ratio,additional_shipping_cost,ecotax,ecotax,price,price,id_tax_rules_group,price,price,price,price,on_sale,active,width,height,depth,weight,"+ ...
"available_for_order,`condition`,show_price,online_only,id_supplier,id_manufacturer,id_color_default,quantity_discount,customizable,uploadable_files,text_fields,indexed")

Le temps d'exécution est très correct (4.5s pour remplir la table d'une trentaine de colonnes, avec environ soixante produits).

Mais je souhaite modifier le contenu de certaines colonnes, durant ce remplissage, en lisant les infos dans une autre table de la base (table ps_product_lang).

Pour faire cela, j'avais adopté une approche qui n'est manifestement pas optimale, puisqu'elle fait passer le durée de la même opération a 2min:

J'ai en effet inclus du code dans la routine "Affichage d'une ligne" de ma table mémoire. Ce code utilise SQLLitRecherche sur la table product_lang:

SQLLitRecherche("id_product = "+id_product__ps_product[TABLE_ps_product]+" AND id_lang = "+Lang ,2)
SI resultat > 0 alors
si name[TABLE_ps_product] <> UTF8VersChaîne(I_Product_Lang:m_name) name[TABLE_Ps_product] = UTF8VersChaîne(I_Product_Lang:m_name)
FIN

C'est cette requête SQLLitRecherche, exécutée pour chaque produit (pour chaque ligne crée par SQLCtable) qui ralenti tout.

Mais je ne sais pas comment faire autrement.

J'ai pensé qu'il fallait peut être lier les deux tables, mais je n'ai pas compris comment faire (j'ai essayé mais n'y suis pas arrivé).

J'ai aussi pensé qu'il fallait peut être utiliser des requêtes, mais la j'ai rien pigé à la méthode à suivre.

Aide et conseils sont plus que bienvenus.

Franck

Posté le : 2011/8/20 19:10
Transférer la contribution vers d'autres applications Transférer

Sujet Auteurs Dernières réponses





[Recherche avancée]