میخواستم بدونم کدام دستور سریعتر است و کدام سریعتر چرا ؟؟(فرض بانک یک میلیون رکورد دارد)
1
" target="_blank" title="برای دانلود اینجا را کلیک کنید">
2
" target="_blank" title="برای دانلود اینجا را کلیک کنید">
میخواستم بدونم کدام دستور سریعتر است و کدام سریعتر چرا ؟؟(فرض بانک یک میلیون رکورد دارد)
1
" target="_blank" title="برای دانلود اینجا را کلیک کنید">
دوست عزیز
بهترین حالت اینه که از StoredProcedure استفاده بکنی
چیزی که به نظر می رسه از لحاظ سرعت اجرا تفاوت چندانی ندارند (شاید چند نانوثانیه!)
چون کاری که انجام می دند اصولا یکیه.در واقع تا اونجا که من می دونم دستور کد 1 که تبدیل به چند خط کد در دومی شده فقط برای راحتی برنامه نویسه و عملا هنطام اجرا همان چند خط دومی اجرا می شه.
store procedure هم برای افزایش قابلیت خواندن برنامه است و از لحاظ سرعت فرقی نداره. البته تا اونجا که من می دونم!
از لحاظ صول برنامه نویسی هم بهترین کار stored procedure است.
آخرین ویرایش به وسیله HAIdle : دوشنبه 07 خرداد 1386 در 13:30 عصر دلیل: ناقص بید!
اهر دو روش روشهایه اشتباهی هستند.
مشکل اصلی چه است؟ اگر واقعاً میخواهید ۱ میلیون رکورد را نمایش بدید از داتا ریدر استفاده کنید.
هیچ چیز خاصی نیست فقط می خوام بدونم باید از کدوم استفاده کنم
دیگه نظری نیست پس بجز store proc مورد 1 و 2 با هم فرقی ندارن ؟؟؟؟
عزیزم من میخام اطلاعات رو بریزم توی دیتا ست میشه بگید با ریدر چطور این کارو بکنم ؟؟؟؟؟؟؟
عزیزم من میخوام اطلاعات رو بریزم توی دیتا ست میشه بهم بگید چطور با ریدر این کارو بکنم ؟؟؟؟
خب من توی هر 3 تا نوشتم دیتا ست رو پر کردم
از لحاظ سرعت هیچ فرقی نداره. استفاده از datareader هم از لحاظ سرعت تفاوت آنچنانی با استفاده از dataadapter و dataset نداره(من روی 5 میلیون رکورد و اوراکل تست کردم).
استفاده از store procedure هم توی این حالت اصلا کارایی نداره و در حالت ذخیره سازی اطلاعات و بروز آوری یا حذف استفاده داره.
استفاده از view هم فقط برای یک جدول (بدون در نظر گرفتن سورت و فیلتر) تاثیری در سرعت نداره.
در ضمن استفاده از store procedure برای برنامه های client/server به نظر من فقط load سرور رو زیاد می کنه. من شخصا همه عملیات رو روی client انجام میدم.
اول اینکه بایستی شما در جدولت، index ایجاد کنی (ایندکس برای دسترسی سریع بع اطلاعات ساخته شده)، بعد با توجه به اینکه شما میخواهید تغییراتی در جدول اعمال کنید، بهتره از sp استفاده کنید.(تا میتونید از sp استفاده کنید)
چرا store proc بهتر از بقیه است خب اونم کل بانک رو میاره توی حافظه ؟؟؟ یا اینکه خود sql server با stroe proc بهتر کار میکنه ؟
کسی میدونه دقیقا مکانیزم کار این دستورات چطوری است ؟
تا این اندازه میدونم که بهتره دستورات SQL ائی که مکررا بکار گرفته میشوند را بصورت stored procedure ذخیره کنیم، چون پروسیجرهای ذخیره شده، کدهای خود را با سرعت بیشتری اجرا میکنند به نسبت زمانی که دستورات از خارج دریافت شده باشه. فکر نمیکنم برای یک خط دستور مثل SELECT که فقط بخواهیم یکی دوبار آنرا اجرا کنیم، احتیاجی به stored procedure باشه!!..!کسی میدونه دقیقا مکانیزم کار این دستورات چطوری است ؟
منظور از اینکه که استورد پروسیجر کل بانک را میاره در حافظه چیه؟ دلیل اینکه کل بانک میاد در حافظه این است که داتاست را پر میکنید، ۵ میلیون رکورد را ریختن در داتاست تا جایی که من میدونم کاره درستی نیست.
در پست اول از سلکت استفاده میکنید، اگر برایه گرفتن رپورت اینکار را میکنید از ویو و داتا ریدر استفاده کنید.
استفاده از استورد پروسیجر معمولاْ کار درستی است ولی در این مسعله به کار نمیاد.
البته که استفاده از داتاست برایه ۵ میلیون رکورد به حافظه فشار میاره.