کدام دستور صحیح تر و کدام سریعتر است

Printable View



3

از طریق store proc که در خود sqlserver ساخته شود
  • دوشنبه 07 خرداد 1386, 13:24 عصر
    Keramatifar
    دوست عزیز
    بهترین حالت اینه که از StoredProcedure استفاده بکنی
  • دوشنبه 07 خرداد 1386, 13:27 عصر
    HAIdle
    چیزی که به نظر می رسه از لحاظ سرعت اجرا تفاوت چندانی ندارند (شاید چند نانوثانیه!)
    چون کاری که انجام می دند اصولا یکیه.در واقع تا اونجا که من می دونم دستور کد 1 که تبدیل به چند خط کد در دومی شده فقط برای راحتی برنامه نویسه و عملا هنطام اجرا همان چند خط دومی اجرا می شه.
    store procedure هم برای افزایش قابلیت خواندن برنامه است و از لحاظ سرعت فرقی نداره. البته تا اونجا که من می دونم!
    از لحاظ صول برنامه نویسی هم بهترین کار stored procedure است.
  • دوشنبه 07 خرداد 1386, 13:34 عصر
    اَرژنگ
    اهر دو روش روشهایه اشتباهی هستند.
    مشکل اصلی چه است؟ اگر واقعاً میخواهید ۱ میلیون رکورد را نمایش بدید از داتا ریدر استفاده کنید.
  • دوشنبه 07 خرداد 1386, 13:41 عصر
    essa_61
    هیچ چیز خاصی نیست فقط می خوام بدونم باید از کدوم استفاده کنم
    دیگه نظری نیست پس بجز store proc مورد 1 و 2 با هم فرقی ندارن ؟؟؟؟
  • دوشنبه 07 خرداد 1386, 14:36 عصر
    اَرژنگ
    نقل قول:

    نوشته شده توسط essa_61 مشاهده تاپیک
    هیچ چیز خاصی نیست فقط می خوام بدونم باید از کدوم استفاده کنم
    دیگه نظری نیست پس بجز store proc مورد 1 و 2 با هم فرقی ندارن ؟؟؟؟

    هیچ کدام روش درست نیست، استورد پروسیجر برایه اینکار نیست.
    از ویو استفاده کنید با داتا ردیدر.
  • دوشنبه 07 خرداد 1386, 14:47 عصر
    essa_61
    عزیزم من میخام اطلاعات رو بریزم توی دیتا ست میشه بگید با ریدر چطور این کارو بکنم ؟؟؟؟؟؟؟
  • دوشنبه 07 خرداد 1386, 14:50 عصر
    essa_61
    عزیزم من میخوام اطلاعات رو بریزم توی دیتا ست میشه بهم بگید چطور با ریدر این کارو بکنم ؟؟؟؟

    خب من توی هر 3 تا نوشتم دیتا ست رو پر کردم
  • دوشنبه 07 خرداد 1386, 15:53 عصر
    شکارچی
    از لحاظ سرعت هیچ فرقی نداره. استفاده از datareader هم از لحاظ سرعت تفاوت آنچنانی با استفاده از dataadapter و dataset نداره(من روی 5 میلیون رکورد و اوراکل تست کردم).

    استفاده از store procedure هم توی این حالت اصلا کارایی نداره و در حالت ذخیره سازی اطلاعات و بروز آوری یا حذف استفاده داره.

    استفاده از view هم فقط برای یک جدول (بدون در نظر گرفتن سورت و فیلتر) تاثیری در سرعت نداره.

    در ضمن استفاده از store procedure برای برنامه های client/server به نظر من فقط load سرور رو زیاد می کنه. من شخصا همه عملیات رو روی client انجام میدم.
  • دوشنبه 07 خرداد 1386, 17:15 عصر
    hdv212
    اول اینکه بایستی شما در جدولت، index ایجاد کنی (ایندکس برای دسترسی سریع بع اطلاعات ساخته شده)، بعد با توجه به اینکه شما میخواهید تغییراتی در جدول اعمال کنید، بهتره از sp استفاده کنید.(تا میتونید از sp استفاده کنید)
  • دوشنبه 07 خرداد 1386, 17:30 عصر
    essa_61
    چرا store proc بهتر از بقیه است خب اونم کل بانک رو میاره توی حافظه ؟؟؟ یا اینکه خود sql server با stroe proc بهتر کار میکنه ؟
    کسی میدونه دقیقا مکانیزم کار این دستورات چطوری است ؟
  • دوشنبه 07 خرداد 1386, 18:38 عصر
    PC2st
    نقل قول:

    کسی میدونه دقیقا مکانیزم کار این دستورات چطوری است ؟
    تا این اندازه میدونم که بهتره دستورات SQL ائی که مکررا بکار گرفته میشوند را بصورت stored procedure ذخیره کنیم، چون پروسیجرهای ذخیره شده، کدهای خود را با سرعت بیشتری اجرا میکنند به نسبت زمانی که دستورات از خارج دریافت شده باشه. فکر نمیکنم برای یک خط دستور مثل SELECT که فقط بخواهیم یکی دوبار آنرا اجرا کنیم، احتیاجی به stored procedure باشه!!..!
  • دوشنبه 07 خرداد 1386, 19:14 عصر
    اَرژنگ
    نقل قول:

    نوشته شده توسط essa_61 مشاهده تاپیک
    چرا store proc بهتر از بقیه است خب اونم کل بانک رو میاره توی حافظه ؟؟؟ یا اینکه خود sql server با stroe proc بهتر کار میکنه ؟
    کسی میدونه دقیقا مکانیزم کار این دستورات چطوری است ؟

    منظور از اینکه که استورد پروسیجر کل بانک را میاره در حافظه چیه؟ دلیل اینکه کل بانک میاد در حافظه این است که داتاست را پر میکنید، ۵ میلیون رکورد را ریختن در داتاست تا جایی که من میدونم کاره درستی نیست.
    در پست اول از سلکت استفاده میکنید، اگر برایه گرفتن رپورت اینکار را میکنید از ویو و داتا ریدر استفاده کنید.
    استفاده از استورد پروسیجر معمولاْ کار درستی است ولی در این مسعله به کار نمیاد.
    البته که استفاده از داتاست برایه ۵ میلیون رکورد به حافظه فشار میاره.