ورود

View Full Version : سرعت اجرای کوئری در بانک و دلفی



alaveh
چهارشنبه 22 تیر 1390, 12:02 عصر
سلام

می خوام بدونم اینکه من کوئری رو توی خود اکسس بنویسم ( یا هر بانک دیگه ای ) سرعتش بالاتر از این میشه که توی دلفی ( یا هر زبان دیگه ای ) کوئری رو توی AdoQuery بنویسم و ران کنم ؟

و کلا فرقی با هم دارن یا نه ؟

pezhvakco
چهارشنبه 22 تیر 1390, 19:38 عصر
سلام :
اگه پایه ایی بخوای در نظر بگیری، بله .
برای درخواست های کوچک زیاد دیده نمیشه ولی برای مواردی که کارهای محاسباتی و پردازش بالا داره خودش نشون میده .

یوسف زالی
چهارشنبه 22 تیر 1390, 21:02 عصر
سلام.
من مخالف هستم.
طبق تجربیات من محاسبات در برنامه سریعتر اتفاق می افته.
بطورمثال در موردی که برای من پیش اومد محاسبات در SQL دو دقیقه و در برنامه 3 ثانیه طول می کشید.
معایب :
اسکریپت های محاسباتی در SQL روی سرور انجام میشه و وای به روزی که چندین تابع هم فراخوانی بشه.
این به این معنیه که اگر چند نفر با هم بخوان همون کارو کنن پردازشگر وقتشو باید تقسیم کنه.
بهتره فقط Select ها و Update -Delete - Insert ها اونحا باشه و تا حد ممکن سعی کنید از پردازش هایی که میشه با کمترین رفت و برگشت به SQL انجام بشه در سمت SQL پرهیز کنید.
خوبی انجام اون در سمت کلاینت اینه که سرعت انجام محاسبات در کلاینت بیشتره و هر کسی روی سیستم خودش این کارو می کنه.

برای مثال این رو در نظر بگیرید:


declare @x int
declare @y float
set @x = 0
while @x < 20000000
begin
set @x += 1
set @y = @x * 2
end
print @y

زمان طول کشیده در سرور خلوت تک کاربره: 15 ثانیه

در دلفی:


var
x: longint;
y: real;
t1, t2: Cardinal;
begin
t1 := GetTickCount;
x := 0;
while x < 20000000 do
begin
x := x + 1;
y := x * 2;
end;
t2 := GetTickCount;
Edit1.Text := IntToStr(t2 - t1) + ' ms';
end;


زمان طول کشیده 14 میلی ثانیه.

خودتون دیگه حساب کنید ببینید اگر چهارتا تابع هم بهش اضافه شه و چند نفر هم همزمان بیان تو SQL دیگه چی میشه.