Je suis un peu confus sur ce qui est préférable d'utiliser dans le cas suivant: J'ai une requête assez complexe qui est utilisée à des fins de reporting. Une version simplifiée ressembleInline fonction table-valeur vs procédure stockée (SQL Server)
SELECT [type], COUNT(*) as total_num, COUNT(DISTINCT user_id) as uq_user_num
FROM table1
INNER JOIN table2 ON (...)
...
WHERE table3.last_action_date BETWEEN :start_date AND :end_date
GROUP BY [type]
Je peux créer une fonction en ligne ou une procédure stockée qui prend start_date et end_parameters et exécute cette requête.
Je suis enclin à fonctionner car cette tâche n'implique aucune modification de données ou logique complexe. Aussi, je peux vouloir utiliser le résultat dans APPLY
plus tard (ce n'est pas vraiment important pour le moment).
Est-il sensé d'utiliser la fonction, pas la procédure? Est-ce une différence par rapport au point de vue des performances (mise en cache du plan d'exécution, etc.)?
Merci.
La vue ne fonctionne pas. J'ai besoin de filtrer les résultats, puis de les regrouper. Pour autant que je sache, il est impossible de passer des paramètres à – a1ex07
J'ai vu ce lien avant de poster ma question; il a une bonne information sur la différence entre les fonctions et les procédures, mais c'est un peu trop général. Aussi, pour le moment, je ne me soucie pas vraiment d'appeler la procédure dans 'SELECT'; si j'ai besoin de le faire, je peux toujours déclarer une variable de table, puis la remplir avec 'INSERT INTO ... EXECUTE', puis utiliser la variable. – a1ex07