|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2008 Messages : 60 ![]() |
Bonjour
J'ai une question d'ordre "philosophique". Elle consiste en un choix d'utilisation d'une fonction ou d'une procédure stockée. J'ai crée une procédure stockée qui contient un SELECT. Il est "alimenté" par des données issues de tables mais aussi de variables implémentée par des calculs en amont du SELECT. Je souhaiterais déporter ces calculs dans d'autres objets. Techniquement, la chose semble possible aussi bien dans des "sous" procédures stockées mais aussi dans des fonctions. Quelle solution est préférable et pourquoi. Merci d'avance Herve Aouate |
|
|
00
|
|
|
#2 |
|
Nouveau Membre du Club
![]() Inscription : septembre 2008 Messages : 35 ![]() |
bonjour,
je suis toujours embêter lorsque je vois les termes best pratice. Sur le principe il y a pas un mieux que l'autre. Il faut utiliser le meilleur en fonction de ton besoin. Les deux existes il y a une raison ... Louis Malta |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2008 Messages : 60 ![]() |
Justement, je désirerais connaitre ces raisons.
Je ne cherchais justement pas un principe mais la solution la plus adaptée à mon cas. |
|
|
00
|
|
|
#4 |
|
Nouveau Membre du Club
![]() Inscription : septembre 2008 Messages : 35 ![]() |
Ok désolé,
Si tu veux la réutilisabilité les deux sont valables. Les fonctions sont une facilité mais dans certains cas peuvent être très coûteuse pour les perf. Personnellement je passe plus facilement par des procs que des fonctions Tous simplement pour une question de portabilité (nous avons encore des SQL 7 donc pas de fonction) Je fais beaucoup de traitement de masse donc je passe beaucoup par des tables temporaires beaucoup performantes sur des gros volumes. En même temps si tu dois rééffectuer les même calcules sur plusieurs endroits peut être ne devrais tu pas stocker le résultat du calcul en table. Dans le doute fait les deux et utilises : set statistics io on et compare les stat tu sauras alors laquelle est la plus adaptée à ton cas. Louis Malta |
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2008 Messages : 60 ![]() |
Super !!!
Merci beaucoup |
|
|
00
|
|
|
#6 | |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Les fonctions table, c'est à dire renvoyant une table sont élégantes à utiliser si la requête se fera toujours sans jointure, sinon, c'est un cauchemar et il faut la plupart du temps utiliser les opérateurs d'intra jointure CROSS APPLY / OUTER APPLY.
Une procédure stockée est mieux paramétrable mais ne permet pas de faire de jointure. Entre les deux il est difficile de dire ce qui est mieux. Cela dépend de ce que l'on va en faire ! Quand à cette affirmation : Citation:
par exemple une récriture via CTE est souvent bien plus performante... 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 * * * * * |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com