Quelle est la différence entre une procédure stockée et une vue?

Je suis confus à propos de quelques points:

  1. Quelle est la différence entre une procédure stockée et une vue?

  2. Quand dois-je utiliser les procédures stockées et quand dois-je utiliser les vues dans SQL Server?

  3. Les vues permettent-elles de créer des requêtes dynamics où nous pouvons transmettre des parameters?

  4. Lequel est le plus rapide, et sur quelle base l’un est-il plus rapide que l’autre?

  5. Les vues ou les procédures stockées allouent-elles la mémoire de manière permanente?

  6. Qu’est-ce que cela signifie si quelqu’un dit que les vues créent une table virtuelle, alors que les procédures créent une table de matières?

S’il vous plaît laissez-moi savoir sur d’autres points, s’il y en a.

Une vue représente une table virtuelle . Vous pouvez joindre plusieurs tables dans une vue et utiliser la vue pour présenter les données comme si les données provenaient d’une seule table.

Une procédure stockée utilise des parameters pour effectuer une fonction … qu’il s’agisse de mettre à jour et d’insérer des données ou de renvoyer des valeurs uniques ou des ensembles de données.

Création de vues et de procédures stockées – contient des informations de Microsoft indiquant quand et pourquoi utiliser chacune d’elles.

Disons que j’ai deux tables:

Colonnes de tbl_user: .user_id, .user_name, .user_pw

Colonnes de tbl_profile: id_profil, id_utilisateur .profile_description

Donc, si je me trouve interroger à partir de ces tables ALOT … au lieu de faire la jointure dans chaque pièce de sql, je définirais une vue comme:

CREATE View vw_user_profile AS Select A.user_id, B.profile_description FROM tbl_user A left join tbl_profile B on A.user_id = b.user_id GO 

Donc, dans le futur, si je veux interroger profile_description par identifiant, tout ce que j’ai à faire est de

 SELECT profile_description FROM vw_user_profile WHERE user_id = @ID 

Ce code pourrait être utilisé dans une procédure stockée comme:

 create procedure dbo.getDesc @ID int AS begin SELECT profile_description FROM vw_user_profile WHERE user_id = @ID END GO 

Donc plus tard, je peux appeler

 dbo.getDesc 25 

et je vais obtenir la description de l’ID utilisateur 25. où le 25 est votre paramètre.

Il y a évidemment beaucoup plus de détails, mais c’est juste l’idée de base.

Beaucoup d’informations disponibles sur le web comme ça

Voici un bon résumé:

Une procédure stockée:

  • accepte les parameters
  • ne peut pas être utilisé comme bloc de construction dans une requête plus grande
  • peut contenir plusieurs instructions, boucles, SI ELSE, etc.
  • peut effectuer des modifications sur une ou plusieurs tables
  • ne peut PAS être utilisé comme cible d’une instruction INSERT, UPDATE ou DELETE.

Une vue:

  • n’accepte pas les parameters
  • peut être utilisé comme bloc de construction dans une requête plus volumineuse
  • ne peut contenir qu’une seule requête SELECT
  • ne peut effectuer aucune modification à une table
  • mais peut (parfois) être utilisé comme cible d’une instruction INSERT, UPDATE ou DELETE.

Tout d’abord, vous devez comprendre Les deux sont des choses différentes. Les procédures stockées sont mieux utilisées pour les instructions INSERT-UPDATE-DELETE. et Views sont utilisés pour les instructions SELECT. et vous devriez utiliser les deux.

Dans les vues, vous ne pouvez pas modifier les données. Certaines bases de données ont des vues pouvant être mises à jour dans lesquelles vous pouvez utiliser INSERT-UPDATE-DELETE sur les vues.

Une vue est un moyen simple de sauvegarder un SELECT complexe dans la firebase database.

Une procédure de stockage est utilisée lorsque SQL simple ne suffit pas. Les procédures de magasin contiennent des variables, des boucles et des appels à d’autres procédures stockées. C’est un langage de programmation, pas un langage de requête.

  1. Les vues sont statiques. Considérez-les comme de nouveaux tableaux avec une certaine disposition et les données qu’ils contiennent sont créées à la volée en utilisant la requête avec laquelle vous les avez créées. Comme avec toute table SQL, vous pouvez la sortinger et la filtrer avec WHERE , GROUP BY et ORDER BY .

  2. Le dépend de ce que vous faites.

  3. Le dépend de la firebase database. Des vues simples exécutent simplement la requête et filtrent le résultat. Mais les bases de données comme Oracle permettent de créer une vue “matérialisée” qui est essentiellement une table mise à jour automatiquement lorsque les données sous-jacentes de la vue changent.

    Une vue matérialisée vous permet de créer des index sur les colonnes de la vue (en particulier sur les colonnes calculées qui n’existent nulle part dans la firebase database).

  4. Je ne comprends pas de quoi tu parles.

Une vue SQL est une table virtuelle basée sur une requête SQL SELECT. Une vue fait référence à une ou plusieurs tables de firebase database existantes ou à d’autres vues. C’est la capture instantanée de la firebase database alors qu’une procédure stockée est un groupe d’instructions Transact-SQL compilées dans un seul plan d’exécution.

View est une présentation simple des données stockées dans les tables de la firebase database, tandis qu’une procédure stockée est un groupe d’instructions pouvant être exécutées.

Une vue est plus rapide car elle affiche les données des tables référencées alors qu’une procédure de magasin exécute des instructions SQL.

Cochez cet article: Voir vs procédures stockées . Exactement ce que vous cherchez

  1. Une vue est une requête dynamic où vous pouvez utiliser une clause “WHERE”
  2. Une procédure stockée est une sélection de données fixe, qui renvoie un résultat prédéfini
  3. Ni une vue, ni une procédure stockée n’allouent de la mémoire. Seule une vue matérialisée
  4. Une TABLE n’est qu’une ENTITY, une vue peut collecter des données de différentes ENTITIES ou TABLES

La principale différence est que lorsque vous interrogez une vue, sa définition est collée dans votre requête. La procédure pourrait également donner des résultats de requête, mais elle est compilée et accélérée. Les vues indexées sont une autre option.

@Pasortingck a raison avec ce qu’il a dit, mais pour répondre à vos autres questions, une vue se créera elle-même en mémoire et, selon le type de jointures, de données et si une agrégation est effectuée, la vue pourrait être très gourmande en mémoire.

Les procédures stockées effectuent tout leur traitement en utilisant la table de hachage temporaire, par exemple # tmpTable1 ou en mémoire avec @ tmpTable1. Selon ce que vous voulez lui dire.

Une procédure stockée est comme une fonction, mais est appelée directement par son nom. au lieu de fonctions qui sont réellement utilisées dans une requête elle-même.

Évidemment, la plupart du temps, les tables de mémoire sont plus rapides si vous ne récupérez pas beaucoup de données.

Mahesh n’a pas tout à fait raison lorsqu’il suggère que vous ne pouvez pas modifier les données dans une vue. Donc, avec le sharepoint vue de Pasortingck

 CREATE View vw_user_profile AS Select A.user_id, B.profile_description FROM tbl_user A left join tbl_profile B on A.user_id = b.user_id 

Je PEUX mettre à jour les données … par exemple je peux faire l’un ou l’autre …

 Update vw_user_profile Set profile_description='Manager' where user_id=4 

ou

 Update tbl_profile Set profile_description='Manager' where user_id=4 

Vous ne pouvez PAS INSÉRER à cette vue car tous les champs de la table ne sont pas tous présents et je suppose que PROFILE_ID est la clé primaire et ne peut pas être NULL. Cependant, vous pouvez parfois insérer dans une vue …

J’ai créé une vue sur une table existante en utilisant …

 Create View Junk as SELECT * from [TableName] 

PUIS

 Insert into junk (Code,name) values ('glyn','Glyn Roberts'), ('Mary','Maryann Roberts') 

et

 DELETE from Junk Where ID>4 

Les deux INSERT et DELETE ont fonctionné dans ce cas

De toute évidence, vous ne pouvez pas mettre à jour les champs qui sont agrégés ou calculés, mais toute vue qui est juste une vue droite doit pouvoir être mise à jour.

Si la vue contient plus d’une table, vous ne pouvez ni l’insérer ni la supprimer, mais si la vue est un sous-ensemble d’une seule table, vous pouvez généralement le faire.

En plus des commentaires ci-dessus, j’aimerais append quelques points sur les vues.

  1. Les vues peuvent être utilisées pour masquer la complexité. Imaginez un scénario où 5 personnes travaillent sur un projet mais dont une seule est trop performante avec des éléments de firebase database tels que des jointures complexes. Dans un tel scénario, il peut créer des vues qui peuvent être facilement interrogées par d’autres membres de l’équipe lorsqu’ils interrogent une seule table.
  2. La sécurité peut être facilement implémentée par Views. Supposons que nous sums un employé de la table qui contient des colonnes sensibles comme Salary , SSN number . Ces colonnes ne sont pas censées être visibles pour les utilisateurs qui ne sont pas autorisés à les consulter. Dans ce cas, nous pouvons créer une vue en sélectionnant les colonnes dans une table qui ne nécessite aucune autorisation telle que Nom , Age, etc., sans exposer les colonnes sensibles (telles que Salary, etc.). Maintenant, nous pouvons supprimer la permission d’interroger directement la table Employee et conserver simplement l’autorisation de lecture sur la vue. De cette manière, nous pouvons implémenter la sécurité en utilisant Views.