|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : mai 2006 Messages : 175 ![]() |
Bonjour,
je reviens vers vous pour une question d'optimisation. J'ai une table temporaire remplie avec environ 12 000 données, le but est de vérifier dans chaque donnée si elle est déjà enregistrée dans la table A (correspondance d'id), dans ce cas on fait un update, sinon on fait un insert. Le soucis est que la procédure stockée que je fais pour le moment prend énormément de temps je trouve environ 3-4mn en local et plus sur le serveur de production. Voici la partie qui prend du temps, si vous avez une idée, j'ai essayé d'éviter les curseurs (même si j'ai essayé pour voir si c'était plus rapide) : Code :
Merci de votre aide. |
||
|
|
00
|
|
|
#2 | |
|
Membre Expert
![]() ![]() |
Citation:
MERGE. ici une petite démo de MERGE De + il me semble que l'utilisation de variable table @table est plus conseillé (performant) que l'utilisation de table temporaire ##table . |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : mai 2006 Messages : 175 ![]() |
Merci pour votre réponse,
malheureusement j'ai oublié de le préciser je suis sous SQL Server 2005, je vais essayer de modifier les tables temporaires. Si vous avez d'autres idées, merci. |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() |
Tu peux donc utiliser MERGE et les variables table sous SQL 2005.
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : mai 2006 Messages : 175 ![]() |
D'après le lien http://technet.microsoft.com/fr-fr/l.../bb510625.aspx, je vois qu'il n'est disponible sous SQL Server 2008, pareil pour ce lien : http://www.developpez.net/forums/d90...ql-server2005/
Il ne me reconnait pas le mot clé MERGE |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() |
dsl
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : mai 2006 Messages : 175 ![]() |
Pas grave
Merci de ton aide en tout cas, si quelqu'un à une autre idée. |
|
|
00
|
|
|
#8 | ||
![]() ![]() |
Vos problèmes de performances viennent des boucles, vous vérifiez les lignes une par une.
L'idée c'est de faire deux opérations ensemblistes, je ne rentre pas complètement dans le détail mais il faut partir sur quelque chose de ce type : Code :
__________________
Email : http://scr.im/waldar |
||
|
10
|
|
|
#9 |
|
Membre du Club
![]() Inscription : mai 2006 Messages : 175 ![]() |
Merci Waldar,
avant de voir votre réponse j'étais parti sur ce genre de solution, le fait que vous avez eu la même idée "valide" mes évolutions. Merci à tous. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com