PDA

View Full Version : استفاده از View و sp



پرواز
چهارشنبه 23 آبان 1386, 16:39 عصر
سوال: چه وقت باید از View و چه وقت باید از sp استفاده کنیم؟

اگه همیشه از sp استفاده کنیم چه مشکلی پیش میاد؟ مثلاً وقتی که فقط بعضی از اطلاعات رو فیلتر میکنیم و نمایش میدیم اشکالی داره که از sp استفاده بشه؟ اصلاً میشه نتایج sp رو Update یا Delete کرد؟ یا حتی Insert تو sp امکانپذیره؟ (منظورم اینه که با انجام هرکدوم از این کارا اطلاعات جدول مربوطه تغییر کنه.)

MohammadSoft
چهارشنبه 23 آبان 1386, 17:54 عصر
سلام
شما می توانید در sp هر تغییری روی جداولتون بدهید .
اما دلیل استفاده از view فقط بازیابی اطلاعات نیست که بتوان به جای آن از sp استفاده کنید. view ها چون در دیتا بیس ذخیره می شوند باعث می شوند که سرعت و کارایی بازیابی شما بسیار بهبود یابد .

پرواز
چهارشنبه 23 آبان 1386, 18:14 عصر
خوب sp هم مثل View در دیتابیس ذخیره میشه. فکر هم نمی کنم از لحاظ سرعت تفاوتی داشته باشند.

JAFO_IRAN
چهارشنبه 23 آبان 1386, 18:39 عصر
viewها به سادگی با سایر جداول قابل join شدن هستند
برای viewها میتوانیم triggerهای instead of بنویسیم و به این ترتیب امکان ویرایش آنها درست مثل یک جدول در اختیار خواهند بود
در عوض view باید توسط یک دستور select ایجاد شود و استفاده از transact sql در آنها بسیار محدود است

spها درست مثل procedureهای برنامه‌های سطح بالا عمل می‌کنند و برای اجرای یک سری عملیات کپسول شده مناسب هستند. دنباله دلخواهی از دستورات را میتوانیم در sp اجرا کنیم.

در مجموع کاربردهای این دو موجود دو حوزه کاملا متفاوت را میپوشانند...

پرواز
چهارشنبه 23 آبان 1386, 20:24 عصر
ممنونم.

با توجه به همه این صحبتها آیا میشه یه قانون و قاعده کلی برای استفاده از View و SP بیان کرد؟

که مثلاً بگیم تا اونجایی که ممکنه از View استفاده بشه و اونجایی که View جواب نداد از SP استفاده کنیم؟

JAFO_IRAN
چهارشنبه 23 آبان 1386, 20:45 عصر
راستش به نظر من کاملا بستگی به مسئله داره - اگر بخواهیم "انجام یک کار" رو به صورت کپسول شده برعهده سرور قرار دهیم حتما باید از sp استفاده کنیم. در مقابل (که خیلی هم مقابل نیست و بیشتر مثل اون ور زمین میمونه) اگر بخواهیم ریخت ویژه‌ای از همان داده‌های موجود را با join و داستان‌های اختصاصی داشته باشیم بهتر است از View استفاده کنیم. برای بهنگام کردن همزمان دو یا چند جدول به صورتی که از دید کاربر (یعنی client) یک جدول به نظر بیان هم حتما باید از view استفاده کنیم.

ارادت

AminSobati
چهارشنبه 23 آبان 1386, 22:01 عصر
در مورد Performance اصلا SP و View رو با هم مقایسه نکنین. فلسفه View چیزه دیگه ای هست. بعنوان یک قائده کلی، چه View دارین چه ندارین، Queryهای خودتون رو در SP بنویسین.
View کاربردهای خودش رو داره. View کمک میکنه تا شما Queryهای طولانی و پر کاربرد رو دائما تکرار نکنین. همچنین با داشتن شرایطی، قابلیت ساختن ایندکس روی View هست که Result رو آماده میکنه و Joinهای داخل View نیاز به اجرا ندارند (به هنگام Query گرفتن)