URL: https://linuxfr.org/forums/programmation-sql/posts/pb-de-proc%C3%A9dure-stock%C3%A9e-mysql5 Title: Pb de procédure stockée Mysql5 Authors: El_Riiico Date: 2006年04月28日T12:40:57+02:00 Tags: Score: 0 Bonjour, J'ai un problème avec une procédure stockée, qui au final me semble être lente lente qu'un traitement en php + mysql... Je dois lancer l'import d'un gros fichier d'annonces immobilières (environ 80 000 annonces), avec quelques opérations sur chaque annonce (genre : si c'est une nouvelle annonce, j'insère juste l'annonce dans la base, par contre si c'est une mise à jour, je sauvegarde les modifs dans une table d'historique). Pour améliorer les performances, je commence par stocker toutes les annonces à scanner dans une table temporaire. Après, ma procédure stockée parcourt la table temporaire et traite chaque enregistrement. Mon code : DELIMITER $$ DROP PROCEDURE IF EXISTS proapart.traite_annonces_from_fichier $$ CREATE PROCEDURE proapart.traite_annonces_from_fichier( £spaces£ £/spaces£IN des_param_de_config TYPEPARAM ) BEGIN £spaces£ £/spaces£DECLARE done INT DEFAULT 0; £spaces£ £/spaces£DECLARE d_autres_variables_necesaires_au_traitement TYPEVARIABLE; £spaces£ £/spaces£DECLARE cursor_annonces CURSOR £spaces£ £/spaces£FOR SELECT £spaces£ £/spaces£table_temp.mes_champs_a_recuperer £spaces£ £/spaces£FROM table_temp; £spaces£ £/spaces£DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; £spaces£ £/spaces£OPEN cursor_annonces; £spaces£ £/spaces£REPEAT £spaces£ £/spaces£FETCH cursor_annonces INTO mes_var_utiles_au_traitement; £spaces£ £/spaces£-- Mes tests et mes traitements £spaces£ £/spaces£UNTIL done END REPEAT; £spaces£ £/spaces£CLOSE cursor_annonces; END $$ DELIMITER ; Mon traitement dure presque 2 heures quand je le lance. Quand il ne fait pas planter le serveur mysql (sous windows) au bout de 5000 enregistrements. C'est dû à quoi d'après vous ? Est-ce c'est que Mysql n'apprécie pas que je lui envoie 80 000 enregistrements dans le cu(rseur) ? Ca vient de mes contrôles / opérations de maintenance ?

AltStyle によって変換されたページ (->オリジナル) /