ورود

View Full Version : اجرای کند جستجوی بانک از روی CD



FirstLine
دوشنبه 07 دی 1383, 11:20 صبح
با سلام
من یک برنامه با دلفی 6 ، DBISAM و DBISAM_Query نوشته ام که اطلاعات داخل DBISAM را جستجو و نمایش میدهد که بدرستی هم از روی CD کار میکند.
اما مشکل اینه که :
1- سرعت جستجوی بانک از روی CD خیلی کم است و ترجیح میدهم که برنامه و بانک از روی CD اجرا شود. به نظر شما چکار کنم بهتر است؟
2- در SQL برای محدود کردن جستجو از Select Top 100 * From استفاده میکردم ولی با DBISAM نمیشه از Top استفاده کرد و من برای اینکار از DBISAM_Query.Maxrecord=10 استفاده میکنم× آطا راه بهتری هم وجود دارد؟
3 - آیا راهی وجود دارد که در هنگام جستجو با DBISAM_Query و نمایش نتیجه در DBGrid نتیجه جستجو ، رکورد به رکورد (مانند لوود شدن صفحات وب وقتی که Buffer=True است) در DBGrid نمایش داده شود؟ :oops:
با تشکر

hr110
دوشنبه 07 دی 1383, 12:11 عصر
آطا راه بهتری هم وجود دارد؟
از امکان FullText search استفاده کن ، به طور وحشتناکی سرعت را افزایش میدهد :strange: :wink:

FirstLine
دوشنبه 07 دی 1383, 14:09 عصر
با سلام

از امکان FullText search استفاده کن
چجوری؟ :embr:
با تشکر

hr110
دوشنبه 07 دی 1383, 21:19 عصر
توی راهنماش کاملاً توضیح داده

FirstLine
شنبه 12 دی 1383, 10:36 صبح
با سلام
خیلی خیلی ببخشید. :oops: :flower:
یعنی در بانک DBISAM باید در قسمت FullText اسم فیلدها را اضافه کنم یا اینکه با کد نویسی در هنگام جستجو؟ :cry:
با تشکر

hr110
شنبه 12 دی 1383, 17:10 عصر
در هنگام طراحی بانک تب ست اخر به این امر اختصاص یافته است و میتوانید فیلدهای قابل جستجو را انتخاب نمایید، برای جستجو نیز بروی فیلدی که این خاصیت را دارد به این شکل میتوانید جستجو کنید:

begin
with MyTable do
begin
Filter:='TEXTSEARCH('+QuotedStr('DATABASE QUERY SPEED')+
' IN TextBody)';
Filtered:=True;
end;
end;

FirstLine
یک شنبه 13 دی 1383, 06:39 صبح
با سلام
از راهنمایی شما بسیار سپاسگزارم. :flower:
من در برنامه از فیلتر استفاده نکردم و بصورت زیر عمل کردم



DM_DBISAM.DBISAMQuery_Temp.SQL.Text:='Select * From Law ';
DM_DBISAM.DBISAMQuery_Temp.ExecSQL;

برای بالا بردن سرعت کد بالا را چجوری تغییر بدهم؟ :oops:

چه فرقی بین DBISAMQuery.ExecSQL و DBISAMQuery.Open وجود دارد؟
با تشکر

hr110
یک شنبه 13 دی 1383, 10:27 صبح
قبل از دستوری که برای فیلتر نوشتم یک where گذاشته و در کوئریتان استفاده کنید،

فرق:

اولی برای اجرای دستوراتی است که رکوردست برنمیگردانند مانند update , delete و دومی برای زمانی است که نتیجه کوئری شما یک دیتاست میباشد مانند select

FirstLine
چهارشنبه 16 دی 1383, 12:50 عصر
با سلام
ببخشید که من خنگ بازی در میارم! :cry: :oops:
یعنی کد روبرو را چجوری تغییر بدهم؟ :oops:

'Select * From Law WHERE law_Title like''%قانون%'' AND law_Title like''%اساسی%'' AND law_Text like''%داد%'' ';
من دو فیلد law_Text و law_Title را در بانک DBISAM و در حدول مربوطه بعنوان Index قرار دادم
با تشکر