نمایش نتایج 1 تا 4 از 4

نام تاپیک: تفاوت در سرعت لود AdoStoredProc و AdoQuery

  1. #1
    کاربر دائمی
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    Tehran
    پست
    403

    تفاوت در سرعت لود AdoStoredProc و AdoQuery

    با سلام
    آیا اگر یک دستور (فرضا یک دستور ساده SELECT * FROM T1) به صورت پروسیجر در SQL نوشته شود و با استفاده از AdoStoredProc در دلفی فراخوانی شود سرعت لود Data بهتر است یا در حالتی که با استفاده از AdoQuery کد را درون برنامه دلفی تولید کنیم مثلا
    With AdoQuery1 Do
    begin
    ;Close
    ;SQL.Clear
    ;SQL.Text:='SELECT * FROM T1'
    ;open
    ;end
    اگر زمان لود Data متفاوت است لطفا دلیل آن را هم ذکر کنید
    با تشکر

  2. #2

    نقل قول: تفاوت در سرعت لود AdoStoredProc و AdoQuery

    اگر یک دستور (فرضا یک دستور ساده SELECT * FROM T1) به صورت پروسیجر در SQL نوشته شود و با استفاده از AdoStoredProc در دلفی فراخوانی شود سرعت لود Data بهتر است
    این مورد کاملاً درست است و از سرعت بالاتری برخوردار است و علتش هم اینه که در این حالت حجم داده ای که بین سرور و برنامه کلاینت رد و بدل می شود طبیعتاً کمتر خواهد بود و دلیل دیگر هم اینه که کدهایی که به وسیله AdoQuery به سمت سرور فرستاده می شوند باید قبل از اجرا کامپایل شوند ولی در SP ها چنین نیست چون SP ها از قبل کامپایل شده اند. توجه داشته باشید که این موضوع به خوبی خود را در برنامه های تحت شبکه نشان می دهد و یکی از مهمترین عواملی است که می تواند کارایی برنامه های با تعداد کاربران زیاد را به طور شگفت آوری بالا ببرد!

  3. #3
    کاربر دائمی
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    Tehran
    پست
    403

    نقل قول: تفاوت در سرعت لود AdoStoredProc و AdoQuery

    مورد دوم شما مورد قبول است که می گویید این دستورات در سمت سرور مجددا کامپایل می شوند اما در مورد جواب اول شما وقتی که نتیجه خروجی هر دو مورد یکی است چرا باید حجم داده ای که بین سرور و برنامه کلاینت رد و بدل می شود در حالت اول کمتر باشد؟
    با تشکر

  4. #4

    نقل قول: تفاوت در سرعت لود AdoStoredProc و AdoQuery

    برای درک این موضوع پیشنهاد می کنم که عبارت "مزایای استفاده از SP در SQL" را جستجو کنید.

    ولی برای این که تا حدودی جواب داده باشم یک مثال می زنم:
    دستور SQL زیر را در نظر بگیرید.
    Select Count(*) From MyTbl

    -اگر این دستور به شکل SP باشد تمام عملیات در درون سرور انجام شده و نتیجه که فقط یک عدد است به کلاینت برگردانده می شود.
    -اگر این دستور به شکل یک کوئری در داخل کلاینت باشد ابتدا کلیه رکوردها به کلاینت منتقل شده و سپس عملیات روی آن انجام می شود تا تعداد رکوردها بدست آید.

    البته این موارد ممکن است در DBMS ها و تکنولوژی کار با پایگاه های داده مختلف تا حدودی متفاوت باشد.
    آخرین ویرایش به وسیله BORHAN TEC : شنبه 15 بهمن 1390 در 00:51 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •