Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/06/2011, 16h24   #1
Invité de passage
 
Inscription : mars 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 4
Points : 1
Points : 1
Par défaut Trigger et/ou procédure stockée ?

Bonjour,

Afin de ne pas mettre le minimum de code dans mon interface .net j'ai décidé de déclarer des triggers sur mes tables.
Je me pose alors une question en terme d'optimisation : trigger vs procédure stockée ?
Grosso modo est ce que si je déplace la majorité de mon code dans une procédure je gagne du temps d'exécution ?

Toujours dans un souci d'optimisation, vaut il mieux que je mette mes executions annexes dans des procédures avec variables output ou dans des fonctions ?

Je sais que cela fait beaucoup de questions....

Merci d'avance de vos réponses.
infoIcam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 04h33   #2
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 669
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 669
Points : 8 729
Points : 8 729
Bonjour,

Citation:
Afin de ne pas mettre le minimum de code dans mon interface .net j'ai décidé de déclarer des triggers sur mes tables.
Il n'y a pas de relation directe entre l'un et l'autre.
Les triggers sont là pour implémenter une contrainte d'intégrité des données complexe liée au métier de votre entreprise.

Citation:
Je me pose alors une question en terme d'optimisation : trigger vs procédure stockée ?
Là encore la différence entre un trigger et une procédure stockée est majeure : une procédure stockée est une suite d'instructions qui peut prendre en entrée des pamètres, et qui peut retourner des paramètres, un ensemble, ou rien.

un trigger DML s'exécute lorsqu'une requête tente de modifier les données d'une table. Il ne peut prendre et fournir aucun paramètre, et son exécution est automatique.

Donc par exemple : si vous voulez ajouter une commande pour un client, vous allez utiliser une procédure stockée.
Si en revanche vous voulez automatiquement ajouter une commande à un fournisseur lorsque la quantité en stock d'un produit passe en dessous d'un seuil, vous utiliserez un peut-être un trigger.

Enfin, pour en revenir aux règle métier d'une entreprise, vous pouvez aussi utiliser des contraintes de domaine (CHECK).
Celles-ci peuvent être implémentées à l'aide d'une fonction SQL ou CLR.

Citation:
Grosso modo est ce que si je déplace la majorité de mon code dans une procédure je gagne du temps d'exécution ?
Ce n'est pas le seul gain mais il est clair que c'est le principal.
Pour vous en convaincre, je vous invite à lire l'article de SQLPro sur ce sujet (PDF).

Citation:
Toujours dans un souci d'optimisation, vaut il mieux que je mette mes executions annexes dans des procédures avec variables output ou dans des fonctions ?
Les fonctions scalaires sont connues pour être contre-performantes.
Ensuite pour les procédures stockées, cela dépend de ce que vous entendez par "annexe".
Enfin les fonctions ont un certain nombre de limitations.

Soyez plus précis dans votre contexte, en donnant des exemples concrets si vous voulez une réponse moins générale.

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h55.


 
 
 
 
Partenaires

Hébergement Web