it-swarm.asia

ما هو الفرق بين الإجراء المخزن وطريقة العرض؟

أنا مرتبك بشأن بعض النقاط:

  1. ما هو الفرق بين الإجراء المخزن وطريقة العرض؟

  2. متى يجب علي استخدام الإجراءات المخزنة ومتى يجب استخدام طرق العرض في SQL Server؟

  3. هل تسمح طرق العرض بإنشاء استعلامات ديناميكية حيث يمكننا تمرير المعلمات؟

  4. أيهما الأسرع ، وعلى أي أساس أسرع من الآخر؟

  5. هل تخصص طرق العرض أو الإجراءات المخزنة الذاكرة بشكل دائم؟

  6. ماذا يعني أن يقول شخص ما إن طرق العرض تنشئ جدولًا افتراضيًا ، بينما تنشئ الإجراءات جدول مواد؟

واسمحوا لي أن أعرف المزيد من النقاط ، إذا كان هناك أي.

104
NoviceToDotNet

يمثل العرض الظاهري الجدول. يمكنك ربط جداول متعددة في طريقة عرض واستخدام طريقة العرض لتقديم البيانات كما لو كانت البيانات تأتي من جدول واحد.

يستخدم الإجراء المخزن المعلمات للقيام بوظيفة ... سواء كانت تقوم بتحديث وإدراج بيانات ، أو إرجاع قيم مفردة أو مجموعات بيانات.

إنشاء طرق العرض والإجراءات المخزنة - لديه بعض المعلومات من Microsoft حول متى وسبب استخدام كل منها.

قل لدي جدولان:

tbl_user الأعمدة: .user_id ، .user_name ، .user_pw

tbl_profile الأعمدة: .profile_id ، .user_id .profile_description

لذلك إذا وجدت نفسي أستفسر من هذه الجداول كثيرًا ... بدلاً من القيام بالانضمام إلى كل تقريبًا من sql ، سأحدد طريقة عرض مثل:

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

إذاً في المستقبل إذا كنت أرغب في الاستعلام عن profile_description حسب معرف المستخدم ... كل ما يجب علي فعله هو

SELECT profile_description FROM vw_user_profile WHERE user_id = @ID

يمكن استخدام رمز ذلك في إجراء مخزن مثل:

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

حتى في وقت لاحق يمكنني الاتصال

dbo.getDesc 25

وسأحصل على وصف معرف المستخدم 25. حيث 25 هو المعلمة الخاصة بك.

من الواضح أن هناك الكثير من التفاصيل ، ولكن هذه هي الفكرة الأساسية فقط.

109
Patrick

الكثير من المعلومات المتاحة على شبكة الإنترنت مثل هذا

هنا ملخص جيد:

إجراء مخزّن:

  • يقبل المعلمات
  • يمكنلاأن تستخدم ككتلة بناء في استعلام أكبر
  • يمكن أن تحتوي على عدة عبارات ، حلقات ، إذا عدا ذلك ، إلخ.
  • يمكن إجراء تعديلات على واحد أو عدة جداول
  • لا يمكن استخدامها كهدف لبيان INSERT أو UPDATE أو DELETE.

طريقة عرض:

  • لا يقبل المعلمات
  • يمكن استخدامها ككتلة بناء في استعلام أكبر
  • يمكن أن يحتوي على استعلام SELECT واحد فقط
  • لا يمكن إجراء تعديلات على أي جدول
  • ولكن يمكن (في بعض الأحيان) استخدامها كهدف لبيان INSERT أو UPDATE أو DELETE.
75
cusimar9

تحتاج أولاً إلى فهم كلاهما أشياء مختلفة. يتم استخدام الإجراءات المخزنة بشكل أفضل في عبارات INSERT-UPDATE-DELETE. وتستخدم طرق العرض لبيانات SELECT. ويجب عليك استخدام كليهما.

في طرق العرض ، لا يمكنك تغيير البيانات. تحتوي بعض قواعد البيانات على طرق عرض قابلة للتحديث حيث يمكنك استخدام INSERT-UPDATE-DELETE في طرق العرض.

9
Mahesh

طريقة عرض SQL هي جدول افتراضي يستند إلى استعلام SQL SELECT. تشير طريقة العرض إلى جدول قاعدة بيانات واحد أو أكثر أو طرق عرض أخرى. إنها اللقطة الإضافية لقاعدة البيانات في حين أن الإجراء المخزن هو مجموعة من عبارات SQL للعمليات المترجمة في خطة تنفيذ واحدة.

طريقة العرض "عرض بسيط" لعرض البيانات المخزنة في جداول قاعدة البيانات في حين أن الإجراء المخزن هو مجموعة من العبارات التي يمكن تنفيذها.

طريقة العرض أسرع لأنها تعرض بيانات من الجداول المشار إليها في حين أن إجراء مخزن ينفذ عبارات sql.

التحقق من هذه المادة: عرض مقابل الإجراءات المخزنة . بالضبط ما تبحث عنه

5
reggie

طريقة العرض هي طريقة بسيطة لحفظ SELECT معقدة في قاعدة البيانات.

يتم استخدام إجراء مخزن عندما لا تكون SQL بسيطة فقط. إجراءات المتجر تحتوي على متغيرات ، حلقات ومكالمات إلى الإجراءات المخزنة الأخرى. إنها لغة برمجة ، وليست لغة استعلام.

  1. المشاهدات ثابتة. فكر في هذه الجداول كجداول جديدة ذات تخطيط معين ويتم إنشاء البيانات الموجودة بها بسرعة أثناء استخدام الاستعلام الذي قمت بإنشائه به. كما هو الحال مع أي جدول SQL ، يمكنك فرزه وتصفيته باستخدام WHERE و GROUP BY و ORDER BY.

  2. يعتمد على ما تفعله.

  3. يعتمد على قاعدة البيانات. طرق العرض البسيطة فقط قم بتشغيل الاستعلام وتصفية النتيجة. لكن قواعد البيانات مثل أوراكل تسمح بإنشاء طريقة عرض "مجسَّدة" وهي في الأساس جدول يتم تحديثه تلقائيًا عندما تتغير البيانات الأساسية للعرض.

    تتيح لك طريقة العرض الملموسة إنشاء فهارس على أعمدة العرض (خاصة على الأعمدة المحسوبة التي لا توجد في أي مكان في قاعدة البيانات).

  4. أنا لا أفهم ما الذي تتحدث عنه.

5
Aaron Digulla
  1. VIEW عبارة عن استعلام ديناميكي حيث يمكنك استخدام عبارة "WHERE"
  2. الإجراء المخزن هو تحديد بيانات ثابت ، والذي يُرجع نتيجة محددة مسبقًا
  3. ولا طريقة عرض أو إجراء مخزن تخصيص الذاكرة. فقط وجهة نظر تتحقق
  4. TABLE هي مجرد ENTITY واحدة ، يمكن لطريقة العرض جمع البيانات من ENTITIES أو TABLES مختلفة
3
swissben

الاختلاف الرئيسي هو أنه عند الاستعلام عن طريقة عرض ، يتم لصق التعريف في استعلامك. قد يعطي الإجراء أيضًا نتائج الاستعلام ، لكنه يتم تجميعه وبسرعة أكبر. خيار آخر هو وجهات النظر مفهرسة ..

3
rsc

ماهيش غير صحيح تمامًا عندما يشير إلى أنه لا يمكنك تغيير البيانات في طريقة عرض. لذلك مع وجهة نظر باتريك

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

يمكنني تحديث البيانات ... كمثال يمكنني القيام بأي من هذه ...

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

أو

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

لا يمكنك إدراج هذا العرض نظرًا لعدم وجود جميع الحقول الموجودة في الجدول بأكمله ، وأفترض أن PROFILE_ID هو المفتاح الأساسي ولا يمكن أن يكون NULL. ومع ذلك يمكنك في بعض الأحيان إدراج في طريقة عرض ...

قمت بإنشاء طريقة عرض على جدول موجود باستخدام ...

Create View Junk as SELECT * from [TableName]

ثم

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

و

DELETE from Junk Where ID>4

كل من INSERT و DELETE عملت في هذه الحالة

من الواضح أنه لا يمكنك تحديث أي حقول مجمعة أو محسوبة ولكن أي طريقة عرض بشكل مستقيم يجب أن تكون قابلة للتحديث.

إذا كان العرض يحتوي على أكثر من جدول واحد ، فلن تتمكن من الإدراج أو الحذف ، ولكن إذا كان العرض مجموعة فرعية من جدول واحد فقط ، فيمكنك عادةً ذلك.

2
Glyn Roberts

بالإضافة إلى التعليقات الواردة أعلاه ، أود إضافة نقاط قليلة حول المشاهدات.

  1. وجهات النظر يمكن استخدامها لإخفاء التعقيد. تخيل سيناريو يعمل فيه 5 أشخاص في مشروع ولكن واحد منهم فقط جيد جدًا باستخدام عناصر قاعدة البيانات مثل الصلات المعقدة. في مثل هذا السيناريو ، يمكنه إنشاء طرق عرض يمكن الاستعلام عنها بسهولة من قبل أعضاء الفريق الآخرين أثناء قيامهم بالاستعلام عن أي جدول مفرد.
  2. الأمن يمكن تنفيذها بسهولة من خلال المشاهدات. لنفترض أن لدينا جدول موظف يحتوي على أعمدة حساسة مثل الراتب ، رقم SSN . ليس من المفترض أن تكون هذه الأعمدة مرئية للمستخدمين غير المصرح لهم بعرضها. في مثل هذه الحالة ، يمكننا إنشاء طريقة عرض لتحديد الأعمدة في جدول لا يتطلب أي ترخيص مثل الاسم ، العمر وما إلى ذلك ، دون الكشف عن الأعمدة الحساسة (مثل الراتب ، إلخ) ذكرت من قبل). الآن يمكننا إزالة الإذن للاستعلام مباشرة عن الجدول الموظف والاحتفاظ فقط بإذن القراءة على طريقة العرض. بهذه الطريقة ، يمكننا تطبيق الأمان باستخدام طرق العرض.
1
Ajendra Prasad

Patrick صحيح مع ما قاله ، ولكن للإجابة على أسئلتك الأخرى ، ستنشئ طريقة العرض في الذاكرة ، واعتمادًا على نوع الانضمام والبيانات وإذا كان هناك أي تجميع قد يتم ، فقد يكون عرضًا جائعًا تمامًا للذاكرة.

الإجراءات المخزنة تقوم بمعالجتها إما باستخدام Temp Hash Table مثل: tmpTable1 أو في الذاكرة باستخدام @ tmpTable1. اعتمادًا على ما تريد أن تخبره به.

يشبه الإجراء المُخزّن الوظيفة ، لكن يُطلق عليها مباشرة باسمها. بدلا من الوظائف التي تستخدم بالفعل داخل الاستعلام نفسه.

من الواضح أن معظم جداول الذاكرة تكون أسرع ، إذا كنت لا تسترجع الكثير من البيانات.

1
Robbie Tapping