Forum Programmation.SQL Pb de procédure stockée Mysql5

Posté par .
Tags : aucun
0
28
avr.
2006
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(
IN des_param_de_config TYPEPARAM
)
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE d_autres_variables_necesaires_au_traitement TYPEVARIABLE;
DECLARE cursor_annonces CURSOR
FOR SELECT
table_temp.mes_champs_a_recuperer
FROM table_temp;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cursor_annonces;
REPEAT
FETCH cursor_annonces INTO mes_var_utiles_au_traitement;
-- Mes tests et mes traitements
UNTIL done END REPEAT;
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 ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.