تفاوت در سرعت لود AdoStoredProc و AdoQuery
با سلام
آیا اگر یک دستور (فرضا یک دستور ساده SELECT * FROM T1) به صورت پروسیجر در SQL نوشته شود و با استفاده از AdoStoredProc در دلفی فراخوانی شود سرعت لود Data بهتر است یا در حالتی که با استفاده از AdoQuery کد را درون برنامه دلفی تولید کنیم مثلا
With AdoQuery1 Do
begin
;Close
;SQL.Clear
;SQL.Text:='SELECT * FROM T1'
;open
;end
اگر زمان لود Data متفاوت است لطفا دلیل آن را هم ذکر کنید
با تشکر
نقل قول: تفاوت در سرعت لود AdoStoredProc و AdoQuery
نقل قول:
اگر یک دستور (فرضا یک دستور ساده SELECT * FROM T1) به صورت پروسیجر در SQL نوشته شود و با استفاده از AdoStoredProc در دلفی فراخوانی شود سرعت لود Data بهتر است
این مورد کاملاً درست است و از سرعت بالاتری برخوردار است و علتش هم اینه که در این حالت حجم داده ای که بین سرور و برنامه کلاینت رد و بدل می شود طبیعتاً کمتر خواهد بود و دلیل دیگر هم اینه که کدهایی که به وسیله AdoQuery به سمت سرور فرستاده می شوند باید قبل از اجرا کامپایل شوند ولی در SP ها چنین نیست چون SP ها از قبل کامپایل شده اند. توجه داشته باشید که این موضوع به خوبی خود را در برنامه های تحت شبکه نشان می دهد و یکی از مهمترین عواملی است که می تواند کارایی برنامه های با تعداد کاربران زیاد را به طور شگفت آوری بالا ببرد!:چشمک:
نقل قول: تفاوت در سرعت لود AdoStoredProc و AdoQuery
مورد دوم شما مورد قبول است که می گویید این دستورات در سمت سرور مجددا کامپایل می شوند اما در مورد جواب اول شما وقتی که نتیجه خروجی هر دو مورد یکی است چرا باید حجم داده ای که بین سرور و برنامه کلاینت رد و بدل می شود در حالت اول کمتر باشد؟
با تشکر
نقل قول: تفاوت در سرعت لود AdoStoredProc و AdoQuery
برای درک این موضوع پیشنهاد می کنم که عبارت "مزایای استفاده از SP در SQL" را جستجو کنید.
ولی برای این که تا حدودی جواب داده باشم یک مثال می زنم:
دستور SQL زیر را در نظر بگیرید.
Select Count(*) From MyTbl
-اگر این دستور به شکل SP باشد تمام عملیات در درون سرور انجام شده و نتیجه که فقط یک عدد است به کلاینت برگردانده می شود.
-اگر این دستور به شکل یک کوئری در داخل کلاینت باشد ابتدا کلیه رکوردها به کلاینت منتقل شده و سپس عملیات روی آن انجام می شود تا تعداد رکوردها بدست آید.
البته این موارد ممکن است در DBMS ها و تکنولوژی کار با پایگاه های داده مختلف تا حدودی متفاوت باشد.