requete infaisable d'une traite ??? - SQL/NoSQL - Programmation
Marsh Posté le 13-07-2004 à 16:42:15
en theorie je pense pas kil y est de limite de taille (g deja vu des requetes de plusierus pages). c peut etre les settings de ta db, ou alors le pc sur lequel elle tourne... c koi comme base de donnée ke t'utilise?
Marsh Posté le 13-07-2004 à 16:46:37
je me disais aussi que c'etait pas possible pr la longueur !!!
sinon la base c ms-sql, je peut effectuer d'ordinaire facilement effectuer par l'analyseur de raquete 4 requete de suite,mais bon là????
je precise que ds les 3 derniere requetes j'utilise un curseur different a chaque fois.
Marsh Posté le 13-07-2004 à 16:53:42
Tu es sur quel SGBD ? Elles font quoi tes requêtes ? tu peux poster le code de ta procedure stockée ?
Marsh Posté le 13-07-2004 à 16:58:47
mareek a écrit : Tu es sur quel SGBD ? Elles font quoi tes requêtes ? tu peux poster le code de ta procedure stockée ? |
voili voilo, le code
je rappel tt de meme que partie par partie la requete s'effectue nickel en 40 s, le probleme c'est que quand je la lance d'une traite telle que vs la voyer ds le code, je ne sais pas si elle se termine mais je l'ai laisser deroulée 8 minutes ????
merci.
Code :
|
Marsh Posté le 13-07-2004 à 21:32:37
Ouhlà ! Les 3 curseurs me semblent du pur masochisme !
Y'a combien de tickets traîtés à chaque fois ? Quel poourcentage sont en erreur ?
Parceque la table temporaire #tmp est allimentée de plus en plus au fur et à mesure de la boucle, et a chaque itéreation tu va faire un select dedans, ça me semble clairement usine à gare, et la base ne peux que s'effondrer là !
Marsh Posté le 13-07-2004 à 21:34:58
Attends 2 minutes, je te fais une petite requête SELECT toute bête qui te permettra de récupérer grossomodo les infos dont du as besoin sans passer par la table #tmp (parceque c'est clairement là que ça merde à plein tube !)
Marsh Posté le 13-07-2004 à 21:41:19
Exemple BASIC (à toi de faire la vraie requête correspondante)
|
=> Cette requête recherche dans la base de données toutes les emails en doublon dans la table utilisateur.
Reprends donc les requêtes qui allimentent les curseurs afin de récupérer les @num doublonés, et leur nombre.
-> En faisant un count() - 1 et havving count()-1 > 0 et en faisant alors le sum de toutes les lignes, tu auras le nombre de lignes en erreur (pas besoin de le calculer à la volée)
-> En recherchant ensuite toutes les lignes correspondant aux @num mis en évidence par la requête que je t'indique de faire, tu retrouves toutes les lignes en erreur (pense quand même à laisser passer la première à chaque fois pour que tu te comporte comme le trigger).
-> Ensuite tu peux faire tous les autres traîtements sans difficulé : tu as les lignes en erreur que tu peux updater, et de facto, les lignes que tu n'as pas updaté ne sont pas en erreur.
Marsh Posté le 16-07-2004 à 14:59:40
Ni merci ni merde
Pourrait au moins dire si mes indications sont fructueuses ou non. Ca donne un peu l'impression de s'être fait chier une heure à comprendre le fonctionnement de la procédure pour des queues de prunes...
Marsh Posté le 16-07-2004 à 17:00:49
Qui ne dis mot consens... en gros tu dois avoir résolu son pb, donc il est meme pas revennu... Merci pour lui
Marsh Posté le 13-07-2004 à 16:38:56
slt,
voila j'ai une procedure stockee qui se divise en 4 sous partie, du style:
requete1
requete2
requete3
requete4
quand j'effectue les requete une par une a la suite ca marche nikel(environ 40 seconde au total) et quand j'effectue tout d'une traite ca ne se fini pas, enfin me suis arreter a 8 minutes, comment est-ce possible ?????
existe-t-il un nombre max de caracteres ds une requete ???
ca m'embete car je doit creer un trigger avec ce code et dc je voudrai que ca marche d'une traite, m'enfin pr moi c vraiment incomprehensible...
si vs voulez le code je le mettrai mais il est un peu long a mon avis.
merci d'avance.