|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
![]() ![]() Chef de projet NTIC Inscription : avril 2007 Messages : 1 782 ![]() |
Bonjour à tous,
je me frotte à un problème que je ne parviens pas à résoudre seul. Je fais donc appel à vous. Je dispose d'une procédure stockée de suppression d'objets dans plusieurs tables liées. Cette procédure stockée prend un paramètre en entrée. Je veux procéder à une suppression de masse en utilisant cette procédure stockée mais si possible sans curseur car les performances sont vraiment mauvaises (je suis sur plusieurs centaines de milliers d'itérations). Voilà comment je procède par curseur : Code :
Existe-t-il un moyen de procéder autrement ? Si oui, pourriez-vous me guider ? D'avance merci et bonne journée |
||
|
|
00
|
|
|
#2 | ||
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 954 ![]() |
L'utilisation des curseurs à quelque niveau que ce soit est totalement contre performant. En effet une requête est optimisable. Pas un code itératif...
En gros avec le curseur vous faite devenir le temps de traitement exponentiel alors qu'avec un e requête et les index qui vont bien vous êtes logarithmique... Lisez l'étude de elsuket sur le sujet : http://blog.developpez.com/elsuket/p...ecution-entre/ Donc, il suffit de faire des requêtes DELETE avec sous requête. Exemple Tables : T_CLIENT_CLI, T_FACTURE_FAC, T_LIGNE_FACTURE_LIF Code :
Une autre façon est de mettre des FOREIGN KEY en mode delete cascade, ce qui ira encore plus vite que la solution par trigger (à des très rares exceptions près, les contraintes sont toujours plus rapide que des triggers). A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
||
|
10
|
|
|
#3 |
![]() ![]() Chef de projet NTIC Inscription : avril 2007 Messages : 1 782 ![]() |
Frédéric,
merci pour votre réponse. J'ai procédé comme vous me le conseillez et ai donc abandonné ma procédure stockée. Je fais en fait les suppressions dans les mêmes tables que cette dernière, mais le tout par requête directe. Merci pour votre aide. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com