Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    octobre 2018
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : octobre 2018
    Messages : 66
    Points : 46
    Points
    46

    Par défaut Performance Table function vs Scalaire function

    Bonjour,
    Dans le cade de récupération de données d'une base vers une autre, j'ai créé une table de mappage des Devises entre ceux de la base source et ceux de la base cible,
    la valeur retourné est une seule valeur donc je peux la faire via une fonction scalaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    CREATE FUNCTION udf_scal_Devise
    (@SD_No INT, 
     @SO_ID INT
    )
    RETURNS INT
    AS
         BEGIN
             RETURN
             (
                 SELECT DV_Id
                 FROM 
                      P_SOCIETEDEVISE sd
                 WHERE sd.SD_No = @SD_No
                       AND sd.SO_Id = @SO_Id
             );
         END;
    et l'appel sera :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT dbo.udf_scal_Devise(r.N_Devise + 1, 1) as DV_ID, 
           r.RG_No, 
           r.CT_NumPayeur, 
           r.RG_Montant
    FROM 
         BIJOU.dbo.F_CREGLEMENT r;

    Est ce que passer par une fonction table sera plus performant plus que le scalaire ?

    NB : j'ai évité de passer par une jointure puisque la base source peut avoir plusieurs format (parfois une base ERP et parfois des fichiers plats) donc je pense que déjà par une fonction rend mon code plus générique et réutilisable

  2. #2
    Membre éprouvé
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    septembre 2016
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : septembre 2016
    Messages : 576
    Points : 1 069
    Points
    1 069

    Par défaut

    Citation Envoyé par erpWorld Voir le message
    Est ce que passer par une fonction table sera plus performant plus que le scalaire ?

    NB : j'ai évité de passer par une jointure puisque la base source peut avoir plusieurs format (parfois une base ERP et parfois des fichiers plats) donc je pense que déjà par une fonction rend mon code plus générique et réutilisable
    Le type de retour de la fonction n'influe pas sur la rapidité de l’exécution unitaire.

    En plaçant la fonction dans la clause select combien de fois la fonction va t'elle être exécutée ? pour combien de résultats différents ?
    Le savoir est une nourriture qui exige des efforts.

Discussions similaires

  1. [Sybase 12.5] Performance Table Temporaire dans SP
    Par Organon dans le forum Sybase
    Réponses: 3
    Dernier message: 08/09/2011, 16h23
  2. Performance :Tables liées
    Par Julpierr dans le forum Access
    Réponses: 4
    Dernier message: 08/07/2011, 14h24
  3. Synonyme pour 'table function' de package
    Par qingqong dans le forum SQL
    Réponses: 4
    Dernier message: 16/07/2007, 13h32
  4. performances des virtual functions
    Par xxiemeciel dans le forum C++
    Réponses: 2
    Dernier message: 25/07/2005, 17h24
  5. [performance] table de 10000 enregistrements
    Par debdev dans le forum Requêtes
    Réponses: 10
    Dernier message: 12/07/2005, 14h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo