0 votes

Déployer la vue ou utiliser la fonction pour la recherche

J'ai deux tables principales Org & Article et ensuite il y a un OrgItem Je dois aller chercher ItemCodes pour une Org particulière.

LA STRUCTURE DES TABLEAUX :

  • Org ( Id, OrgCode, Name) - Table principale Org
  • Item ( Id, ItemCode, Name) - Table maîtresse de l'item
  • OrgItem ( ItemId, OrgId, ItemCode) - Certains ItemCodes spécifiques à une Org.

Maintenant, seuls certains éléments ont un ItemCode spécifique à l'Org, donc par défaut je récupère le ItemCode à partir de l'élément mais si pour une combinaison particulière Item+Org si son enregistrement existe dans la table OrgItem, je dois alors récupérer le ItemCode dans la table OrgItem.

Créer un Voir_OrgItem_Item pourrait être une solution mais cela signifierait une vue qui consiste en n-fois la taille de la table d'éléments originale (où n = nombre d'Orgs).

Une autre option consiste à créer un GetItemCode(ItemId, OrgId) qui effectue la recherche et renvoie soit Item.ItemCode, soit ORgITem.ItemCode.

Ma question est donc la suivante : dois-je opter pour un 'View_OrgItem_Item' ou simplement créer une fonction GetItemCode(ItemId, OrgId) ?

Lequel est le meilleur en termes de performances ? Tout autre facteur à prendre en compte.

* Note : Il n'est pas nécessaire que TOUTES les Org aient des enregistrements dans OrgItem.

1voto

Dave Markle Points 44637

Il est presque toujours possible que la vue soit plus performante que l'utilisation d'une fonction. En effet, vous voudrez souvent obtenir le code de l'élément d'une manière basée sur un ensemble. Avec une fonction, cette recherche doit se faire sous le manteau, ligne par ligne. Avec une vue, vous pouvez effectuer une simple jointure et l'optimiseur de requêtes peut choisir des plans plus optimaux qu'une recherche ligne par ligne, ce que la fonction impose essentiellement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X