Question

J'essaie de générer du SQL utilisé pour calculer certains scores finaux - > pense que les enfants à l'école et leurs scores de fin d'année.

J'allais avoir environ 5 UDF Scalar acceptant quelques valeurs simples (par exemple, le score actuel, le sujet, etc.), puis une valeur décimale.

par exemple.

CREATE FUNCTION [dbo].[GetRatingModifier]
(
    @ExamScore DECIMAL(6, 2),
    @Project1Score DECIMAL(6, 2),
    @Project1Score DECIMAL(6, 2),
    @Project1Score DECIMAL(6, 2),
    @SubjectTypeId TINYINT
)
RETURNS DECIMAL(8,5)
AS
BEGIN
    DECLARE @Score DECIMAL(8,5)

    SELECT @Score = (CASE @Project1Score
                     WHEN 1 THEN 10
                     WHEN 2 THEN 12.4
                      ....) +
                    (CASE blah.. u get the drift)..
    RETURN @Score
END

La logique n'a que des maths. Aucune sélection xxx de la table aaaa etc ..

Alors, est-ce que ça va pour la performance?

Était-ce utile?

La solution

Bien sûr, pas de problème - les performances seront presque les mêmes que si vous le faisiez en ligne à chaque SELECT. Je ne pense pas que cela devrait poser problème, bien au contraire, le mettre dans une FDU semble être une très bonne idée! (pour garder votre code T-SQL propre et simple).

Marc

Autres conseils

Oui, c'est une mauvaise idée car vous devez mettre tous vos poids dans un tableau et effectuer une jointure pour obtenir le résultat.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top