ورود

View Full Version : دستورات و توابع با کارایی یکسان



سعید20
چهارشنبه 02 مرداد 1392, 08:31 صبح
سلام به دوستان می خواستم ببینم شما در برنامه هایتان از کدامیک از دستورات زیر بیشتر اسفتاده میکنید و چرا؟
مثلا برای جستجو از دستور seek استفاده میکنید یا از تابع ()seek
یا برای جمع زدن مقادیر از دستور sum استفاده میکنید یا از CALCULATE sum() to var

gh_khajehzade
چهارشنبه 02 مرداد 1392, 14:22 عصر
مثلا برای جستجو از دستور seek استفاده میکنید یا از تابع ()seek

من از ()seek چون با seek بايد براي ارزيابي نتيجه از ()if found هم استفاده كنم.كلا بخاطر كد نويسي كمتر.

farhad_shiri_ex
چهارشنبه 02 مرداد 1392, 18:29 عصر
این خوبه که بتوان با کمترین کد نویسی به جواب دلخواه رسید اماهمیشه خوب نیست و نکته دیگه اینکه عملکرد توابع بازگشتی نسبت به دستورات داخلی کامپایلر کمی متفاوت در ساختار هستند و اینکه بسیاری از این توابع و دستورات تقریبا عمکلردهای مشابه به هم دارند و این به کد نویسی وشرایط فیزیکی برنامه تون بستگی داره که از چه دستور و یا تابعی استفاده کنید مثلا در این مورد دستور Sum و دستور ()Calcu Sum خروجی یکسانی دارند ولی در رکوردهای میلیونی سرعت calcu بیشتر است 1- بخاطر استفاده از تابع بازگشتی در این دستور 2- بخاطر استفاده نکردن Row هایی که مقدار NULL دارن در محاسبه ولی از هم این روشها بهتر استفاده T-SQL و استفاده از تابع های بازگشتی در این دستورات است که به مراتب سرعت بیشتری نسبت به دستورات بالا دارد وآنهم تکنولوژی به کار رفته در دستورات T-SQL می باشد که برای اطلاعات بیشتر می توانید در همین سایت به بخشT-SQL بروید.
ویا دستور seek با تابع ()SEEK هم همینطور خروجی یکسان، عملکرد برروی ایندکس جدول، منتهی زمانهایی پیش می آید که یافتن رکورد مورد نظرتان توام با یک شرط است خوب با تابع ()Seek انعطاف بیشتری دارید ولی خوب دردسرهای خودش را هم دارد اینکه حتما باید عبارت مورد جستجوتون باید عینا TAG ایندکستون باشه و اینکه نگهداری از ایندکس فایلها وقتی حجیم می شود و خرابی زیاد هدر ایندکس فایلها ولی با دستورات SQL از بروز چنین مشکلاتی راحت می شوید در کل کد نویسی بهینه بستگی به عوامل زیادی دارد من جمله الگوریتم برنامه تان - فضای فیزیکی مورد استفاده برنامه تون و بسیاری دیگر...

سعید20
چهارشنبه 02 مرداد 1392, 22:52 عصر
خیلی ممنون از راهنماییتان میتوانید یک مثال sum را با t-sql نشان دهید

farhad_shiri_ex
چهارشنبه 30 مرداد 1392, 15:20 عصر
SELECT SUM((A.QTY+B.RECIPTED)-B.EXPORTED) AS S-QTY FROM INVENTORY A CASH B WHERE A.CODE=1 AND A.RECIPTNO=B.RECIPTNO
البته این ساده ترین شکل دستور sum هست.
جمع دوستون مقدار و رسید شده - صادر شده = مانده مقدار