PDA

View Full Version : تفاوت سرعت انجام عملیات در برنامه (مثلا سی شارپ) و مدیریت پایگاه داده (مثلا SQL SERVER)



krasus
دوشنبه 11 خرداد 1394, 00:58 صبح
سلام
می خوام بدونم سرعت انجام عملیات در SQL بشتره یا برنامه ای که به زبان C# نوشته شده؟
مثلا اگه قرار باشه یه حلقه با مثلا ۵۰۰۰۰ بار تکرار انجام بشه (با یک سری عملیات مشخص داخل حلقه) بهتره که این حلقه رو توی برنامه C# تعریف کنیم که انجام بشه یا توی SQL
؟:متفکر:

البته برای اینکه صحبتم واضحتر بشه اینو بگم که فرض بر این هست که مراحل انجام شدن این حلقه توی زبان C# و SQL یکی هستند و الگوریتم یکسانی برای انجام مراحل در نظر گرفته شده. یعنی مثلا این موضوع کاملا مشخص هست که اگه قرار هست عملیات SORT برای SELECT انجام بشه بهتره که در کوری SQL انجام بشه تا کد C# مگر اینکه الگوریتمی بهتر از الگوریتم های تعریف شده ی SQL برای SORT کردن داشته باشیم که در اون صورت بهتره از الگوریتم خودمون در زبان C# استفاده کنیم. پس بازم میگم قرار هست که الگوریتم انجام عملیات در هر دو حالت زبان C# و SQL یکسان در نظر گرفته بشه.

حالا فکر می کنید سرعت انجام عملیات در SQL بشتره یا برنامه ای که به زبان C# نوشته شده؟:متفکر:

ali_md110
دوشنبه 11 خرداد 1394, 01:21 صبح
سرعت عملیات در Sql بیشتر هست چون وقتی یکبار برنامه اجرا میشه در پس زمینه سرور اندیس گزاری شده و جهت جستجوی بعدی سریعتر انجام میشه
ولی اگر در کد برنامه انجام بدید برای هربار ترجمه دستورات اسکیول باید کدها اجرا شده و سرعت کمتری دارند
معمولا استورد پروسیجر بخاطر اینکه با اجرای اسکیول سرور از انجین اسکیول سرور استفاده میکنه و precompiled هستند سرعت بیشتری داره

mthreat.info
دوشنبه 11 خرداد 1394, 01:48 صبح
مگه با پارامتر کار کردن باعث میشه که اندکس گذاری انجام نشه؟ من فکر میکردم که پارامتر این قابلیت رو میده که اس کیو ال بفهمه که همون کد هست و فقط مقدارش عوض شده و در نهایت از اول کریت نکنه یعنی من اشتباه میکنم؟

krasus
دوشنبه 11 خرداد 1394, 01:54 صبح
ممنون از پاسخگویی سریعتون
فکر کنم نتونستم سوال رو خوب مطرح کنم!

یه مثال دیگه می زنم:
فرض کنید می خواهید یه جدول با ۲۰۰۰۰۰۰ ردیف رو توی دو حالت زیر نمایش بدید :

حالت اول ) توی برنامه ویندوز فورم از دیتاگرید استفاده می کنید و برای ایجاد هر ردیف دیتاگرید یک بار دستور ROWS.ADD() رو استفاده می کنید.

حالت دوم ) توی sql (یعنی دیگه کاری به ویندوز فورم نداریم) یه جدول رو دیکلیر می کنیم و ۲۰۰۰۰۰۰ بار دستور اینزرت رو می نویسیم (البته کپی پیست می کنیم :گیج::قهقهه::گیج:)

اگه از حاشیه های مربوط به نمایش دیتاگرید و جزییات design اون صرف نظر کنیم توی کدوم حالت این ۲۰۰۰۰۰۰ ردیف سریع تر ایجاد میشه

مثال بالا رو می تونید برای شمارش اعداد هم بزنید.(که مثلا شمارش اعداد توی sql سریع تر انجام میشه یا C#)

mthreat.info
دوشنبه 11 خرداد 1394, 02:11 صبح
اگه شما از روش های افزایش سرعت استفاده کنید و جدولتون شرایط خاصی داشته باشه ( واقعا یادم نمیاد کلی تنظیمات داشت ) و اگه دستور اینسرت شما فقط قسمت ورودیش فرق بکنه ( از هر نظر یکی باشه حتی خط فاصله ) قطعا sql سریع تر هست ولی اگه حرفه ای کار نشه ...