IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

MS SQL Server Discussion :

colonne calculée persistance


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut colonne calculée persistance
    bonjour

    j'ai souvent des tables avec des colonnes dont la valeur dépend d'autre colonne de la meme ou d'autre tables
    j'ai donc en général des triggers pour faire les mises à jour

    j'ai voulu tenter les colonnes calculées, que j'ai envie de mettre avec persistance car nos tables étant appelées assez souvent par plusieurs clients, j'ai pas envie de perdre de performance
    pour des colonnes dont la valeur dépend de colonnes de la meme table, ca marche bien
    mais pour les autres, apparemment il faudrait utiliser des fonctions en passant en paramètre un identifiant pour aller rechercher des infos dans d'autres tables, or pour la persistance, il veut des choses déterministes ...

    si vous avez une solution faire des colonnes calculées sans utiliser de trigger je suis preneur
    (en fait j'ai plusieurs triggers par table, que je ne peux pas mixer et qui font qu'au final pour une mise à jour j'arrive à plus de 15 appels de triggers, dont plusieurs fois les même)

    merci
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    En supposant que les fonctions soient déterministes, il resterait quand même un problème de performance, car l'utilisation de fonction provoque un comportement RBAR, et je ne suis pas certain que vous y gagneriez par rapport au trigger.
    Si les tables de base sont faiblement mises à jour, il est envisageable de passer par des fonctions.

    Pour passer outre les triggers et les fonctions, ne vous est-il pas possible d'utiliser une vue (indexée ?) ?

    @++

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    les tables sont beaucoup plus souvent lues que mises à jour, et en général une ligne à la fois, donc l'utilisation dans ce cas de fonctions ne serait pas trop pénalisant

    une vue avec un ch1*ch2 / ch3 ca sera quand meme moins performant que de lire une valeur directement, je ne pense pas qu'en passant par une vue, les résultats soient mis en cache !

    et les triggers after insert,update, ca m'en fait un peu trop à mon gout et ca nous plante certaines choses
    (on a aussi des triggers de "trace" sur certaines tables dont celles qui posent soucis, en insère dans une table d'historique tout ce qui est fait, avec en plus l'iduser et la date, donc si ce trigger est appelé plusieurs fois ca rempli un peu trop pour rien (en plus pas dans le bon ordre), ce qui est le cas en ce moment avec nos multiples triggers)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    une vue avec un ch1*ch2 / ch3 ca sera quand meme moins performant que de lire une valeur directement
    A voir dans le cas d'une vue indexée

    je ne pense pas qu'en passant par une vue, les résultats soient mis en cache !
    ça j'en mettrais pas ma main à couper

    n a aussi des triggers de "trace" sur certaines tables dont celles qui posent soucis, en insère dans une table d'historique tout ce qui est fait
    Si vous êtes sous SQL Server 2008, peut-être que les fonctionnalités Change DataTracking ou Change Data Capture peuvent convenir à votre problématique.
    Ces deux fonctionnalités sont peu gourmandes en ressources.

    @++

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    sql server 2005, et pas toujours en version entreprise (donc pas de vues indexées)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Exact.
    En revanche je reste assez certain ce que vous obtiendriez des performances correctes en utilisant une vue (n'oubliez pas l'option WITH SCHEMABINDING)

    @++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Colonne calculée et PERSISTED
    Par Batou69 dans le forum Développement
    Réponses: 12
    Dernier message: 08/04/2015, 10h33
  2. [vb.net] Datagrdiview +colonne calculée
    Par olbi dans le forum Windows Forms
    Réponses: 1
    Dernier message: 14/10/2006, 10h43
  3. Formule colonne calculée
    Par davasm dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 18/07/2006, 16h33
  4. colonne calculée dans une vue
    Par jfc dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/04/2006, 16h11
  5. [CR] Colonnes calculées
    Par plong dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 23/11/2003, 12h12

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