PDA

View Full Version : مشکل با اجرای Query در DBISAM



nasr
چهارشنبه 23 تیر 1389, 14:06 عصر
سلام

من یه عبارت SQL بصورت Inner Join می نویسم


select code_sabt , f_name , L_Name,father_name,sh_sh,Tel,Name_Vakil from first_info inner join customer on first_info.code_eshterak = customer.code

وقتی این عبارت را در برنامه System Database Utility اجرا می کنم حدود 4 ثانیه انجام میشه ولی وقتی با یک DBISAM Query در برنامه می نویسم حدود 40 دقیقه طول میکشه
این هم متن برنامه


with DBISAMQuery1 do
begin
SQL.Clear;
SQL.Add('select code_sabt , f_name , L_Name from first_info inner join customer on first_info.code_eshterak = customer.code where sent = false');
ExecSQL;
Active := true;
end;

چرا؟

gbg
جمعه 25 تیر 1389, 13:30 عصر
دلیل زمانش رو نمی دونم ولی دستور Active := True رو اضافه نوشتی

nasr
شنبه 26 تیر 1389, 08:41 صبح
من چند برنامه با این DBISAM نوشتم

و واقعا پشیمونم

برای گزارشگیری مجبورم اول جداول را به SQL Server منتقل کنم بعد گزارش گیری کنم

چون یه دستور ساده Inner Join که مثلا از دوتا جدول 50هزار رکوردی 30 رکورد را برگردونه بیش از 50 دقیقه طول میکشه

gbg
شنبه 26 تیر 1389, 10:52 صبح
در ضمن من یه تاپیکی در مورد DBISAM نوشته بودم اون رو ببین
شاید در رویداد AfterScroll داری کاری انجام می دی

nasr
شنبه 26 تیر 1389, 11:14 صبح
در ضمن من یه تاپیکی در مورد DBISAM نوشته بودم اون رو ببین
شاید در رویداد AfterScroll داری کاری انجام می دی

نه من هیچ چیزی غیر از این Query ننوشتم
که این هم روی رویداد OnKlick یک Botton است

همین

gbg
شنبه 26 تیر 1389, 11:19 صبح
چی بگم من باهاش Inner Join انجام دادم تعداد رکوردهام کم بوده و البته مشکلی نداشتم
می خوای دیتای برنامت رو بفرست تست کنم

bootshow
شنبه 02 مرداد 1389, 14:43 عصر
به احتمال زیاد در برنامه از DBGrid یا DBControls استفاده کردی.باید از DisableControl و EnableControl استفاده کنی.
خاصیت Filter را هم چک کن Fase باشه.
یک نکته مهم در مورد سرعت استفاده از DBGrid است.من توی یک برنامه ی که داشتم اطلاعات صد هزار رکورد در عرض دو تا سه ثانیه در
DBGrid دلفی نمایش داده میشد ولی در TMSDBGrid ده ثانیه طول میکشید.
اگر توی DBisam از ایندکس استفاده کنی سرعت جستجو نسبت به بقیه بانکهای اطلاعاتی دلفی بیشتر است.یک برنامه بود که چند تا بانک اطلاعاتی را با هم مقایسه میکرد.مثلا DBIsam و AbsoluteDatabase . در کل DBIsam از همشون بهتر بود.
من در یک جدول اطلاعات پرسنلی که 100,000 رکورد داشت یک جستجو در عرض یک تا دو ثانیه طول میکشید.
روی فیلدهای کد و sent حتما اینکدس بزار.