PDA

View Full Version : FUNCTION



مهدی هادیان2
دوشنبه 29 خرداد 1391, 15:57 عصر
بسم الله الرحمن الرحیم
با سلام
فرض بفرمائید قصد دارم 3 ستون از یک جدولی رو واکشی کنم. در حالتی دیگه همه ستون های اون جدول به اضافه ستون هایی از یه جدول دیگه.
برای این حالت فرضی 2 کار میشه انجام داد:
1) یک فانکشن نوشت و حالت کلی رو در نظر گرفت و برای هر دو تا از هدف های بالا استفاده کرد.
2‍) 2 تا فانکشن اختصاصی نوشت
کدام بهتر است؟
با سپاس

یوسف زالی
شنبه 03 تیر 1391, 16:18 عصر
سلام. استفاده از فانکشن های جدا سرعت رو بالاتر می بره.

baktash.n81@gmail.com
شنبه 03 تیر 1391, 18:27 عصر
البته منظورتون از فانکشن ... SP هست دیگه ؟؟؟

مهدی هادیان2
شنبه 03 تیر 1391, 21:23 عصر
البته منظورتون از فانکشن ... SP هست دیگه ؟؟؟
با سلام
نه منظورم همون Function بود.

baktash.n81@gmail.com
یک شنبه 04 تیر 1391, 07:42 صبح
اگه انقدر براتون سرعت احمیت داره که به فکر این که یه دونه فانکشن بنویسید یا دوتا ... پس بهتره از SPاستفاده کنید ... البته دوست عزیزمون you-see هم حتما خدمتتون توضیح میدن که از Function برای محاسباتی که به دفعات زیاد تکرار می شه استفاده می کنیم و برای واکشی اطلاعات از SP استفاده می کنیم ...

حمیدرضاصادقیان
یک شنبه 04 تیر 1391, 08:21 صبح
سلام.
البته بستگی داره که به چه شکلی بخواهیم Query بنویسیم.
Function معمولا جایی استفاده میشه که بخواهیم بهش یک پارامتری بدیم و یک خروجی بگیریم و بتونیم درSelect ازش استفاده کنیم.
که خروجیش میتونه یک فیلد یا یک جدول باشه که میتونه با Select های ما نیز Join بشه.کاری که با View نمیشه کرد.
ولی با SP شما بهش پارامتر میدیدو خروجی میگیرید و نمیشه از اون خروجی در Join جداول ازش استفاده کرد.
شما باید سناریوی خودتون رو دقیقتر مطرح کنید تا راه حل مناسبتری براش مطرح بشه.

مهدی هادیان2
یک شنبه 04 تیر 1391, 11:08 صبح
سلام.
البته بستگی داره که به چه شکلی بخواهیم Query بنویسیم.
Function معمولا جایی استفاده میشه که بخواهیم بهش یک پارامتری بدیم و یک خروجی بگیریم و بتونیم درSelect ازش استفاده کنیم.
که خروجیش میتونه یک فیلد یا یک جدول باشه که میتونه با Select های ما نیز Join بشه.کاری که با View نمیشه کرد.
ولی با SP شما بهش پارامتر میدیدو خروجی میگیرید و نمیشه از اون خروجی در Join جداول ازش استفاده کرد.
شما باید سناریوی خودتون رو دقیقتر مطرح کنید تا راه حل مناسبتری براش مطرح بشه.
با سلام
باید پارامتر بهش بدم و در اونجا از Join چند تا جدول سلکت می گیرم و خروجی نیز یک جدول است؛ ولی از خروجی اون در Joinهام استفاده ای نمی کنم تنها به عنوان یک جدول مجازی از اون Select می گیرم.
به عبارت دیگر همون کاری که با View لازم دارم ولی با پارامتر.
با تشکر

حمیدرضاصادقیان
یک شنبه 04 تیر 1391, 13:11 عصر
پس با این اوصاف بهترین راه استفاده از SP است.

مهدی هادیان2
یک شنبه 04 تیر 1391, 14:24 عصر
پس با این اوصاف بهترین راه استفاده از SP است.
با سلام
ممنون از پاسختون
لطف می کنید به لینک هایی که در تاپیک Select Or View گذاشتم هم یه نگاهی بیندازید و نظرتون رو بفرمائید تا ان شاالله این قضیه کاملا برام حل بشه.
با تشکر

مهدی هادیان2
دوشنبه 05 تیر 1391, 15:31 عصر
با سلام خدمت همه دوستان
لینک هایی که گفته بودم اینجا هم آوردم. لطفا دوستان نظرشون رو بفرمایند.
همون طور که قبلا هم گفته بودم قبول دارم که سرعت SPها بیشتر از تابع هست؛ ولی مایکروسافت از اینکه table valued function ها رو طراحی کرده حتما هدفی داشته.

http://stackoverflow.com/questions/1...red-procedures (http://stackoverflow.com/questions/1942753/performance-difference-between-user-defined-function-and-stored-procedures)
http://www.dotnetspider.com/resource...Functions.aspx (http://www.dotnetspider.com/resources/18920-Difference-between-Stored-Procedure-Functions.aspx)
http://www.go4expert.com/forums/showthread.php?t=329
http://www.sqlservercentral.com/Foru...16974-8-1.aspx (http://www.sqlservercentral.com/Forums/Topic416974-8-1.aspx)

با تشکر

sajjad_kochekian
سه شنبه 06 تیر 1391, 19:30 عصر
table valued function به شما کمک میکنه که بخشی از سلکت ها پیچیده رو داخل آن بنویسید و با یک سلکت دیگر join کنید
بعضی مواقع برای ساده تر نوشتن کد نویسی کمک می کنه که در هنگام توسعه داخل سلکت های تودرتو گیج نشوید.