الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

بط شديد في الاستعلام

Featured Replies

بتاريخ:

اخواني الكرام السلام عليكم ورحمة الله وبركاتة
اخواني انا عامل برنامج لمستوصف وفيه جدوال لملفات المرضى وعند الاستعلام عن بيانات المريض باستخدام الاسم يحصل بط شديد جدا علما بان عدد الملفات
حدود 35000 ملف ارجو منك الافادة لانه هذا مشكلة كبيره توجهنا ولم اصل الى حل علما اننا استخدم في الاستعلام default_where
وكما هناك سئل اخر انا عملت lov واريد التحكم بعدد السجلات المسترجعه ولم استطيع رغم اننا حدت record group fetch size =20 سجل
الا انا السجلات تظهر كامل من قاعدة البيانات يعني يسترجع 35000 الف ملف ارجو الافادة من الخبراء وجزاكم الله خير الجزاء وزادكم في العلم

بتاريخ:

اولا بالنسبة لجعل الاستعلام سريع قم بعمل index على الحقل الذى سوف تستخدمة فى الاستعلام
create index index_name
on table_name (column_name



اما بالنسبة قم بفتح خصائص ال lov سوف تجد خاصية اسمها filter before desplay قم بتغير قيمتها الى yes

بتاريخ:
  • كاتب الموضوع

اخي العزيز الف شكر لك على الرد اسريع وجزاك الله الف خير
اخي عملت index لكن لم اجد اي تغير
فماذا تراه الف شكر لك مره اخرى

بتاريخ:

السلام عليكم ورحمة الله و بركاته

اخي تأكد من ان كرت الشاشة لديك سليم , ربما يحتاج الى اعادة تعريف

اخوك مراد جانم

بتاريخ:

عطفا على كلام اخونا محمد ابو العلا جزاه الله خيرا ...
ال index يعمل ترتيب لقيم الحقل مما يسرع فى عمليات الاستعلام و استرجاع البيانات مثال :

CREATE INDEX INDX_NAME ON TABLE_NAME (COL_NAME);


واذا كنت فى ال QUERY تستعلم باكثر من حقل و ليكن 3 حقول فمن الافضل عمل INDEX واحد للثلاث حقول مثال

CREATE INDEX INDX_NAME ON TABLE_NAME (COL1,COL2,COL3);



و الفارق مع وجود الINDEX كبير فى الاداء و السرعة

تم تعديل بواسطة egyhamada

بتاريخ:

1- اتأكد من ان كل العلاقات الخارجية إذا كان الإستعلام من اكثر من جدول موجودة داخل Where
2- زيادة مساحة Tablespace الخاصىة باليوزر الموجود داخلة الجدول
3- زيادة مساحة Tablespace الخاصىة UNDOTBS01 ، TEMP

بتاريخ:
  • كاتب الموضوع

اخواني الكرام الف شكر لكم على التفاعل
وارجو التوضيح كيف استطيع زيادة حجم table space
وعلى فكره انا عملت البرنامج بديل لبرنامج مصمم بالفيجوال والاكسس وذالك لاسباب البط واخاف ان يكون البرنامج هذا ابطى واقع في احراج كبير
ارجو التوضيح بجميع الحلول وعلما اننا استخدم في الاستعلام execute_query

بتاريخ:

السلام عليكم
اخي الكريم حتي لاتضيع وقتك فنصيحتي لك هي اللجوء لمتخصص ADMINISTRATION فهناك استعلامات قد يراها الديفولبر انها عادية او سليمة ولكن الادمن يطلق عليها HARD CODE وهي التى تسبب البطئ فى الاستعلامات ؛ اعرض الامر على ادمن افضل
وشكرا
ميجا

بتاريخ:

السلام عليكم

اكتب لنا امر البحث .... وهل البحث مركب اى ان امر البحث يتم بالاسم وايضا عناصر اخرى ام ان البحث بالاسم فقط

او ان امكن ارفق الفورم فقط

بتاريخ:
  • كاتب الموضوع

الف شكر لك المتفاعلين معي وجزاكم الله اف خير
اخواني هذا الكود المستخدام وهو بحث باكثر من قيمة
----------------------------------

-------------
-PROCEDURE search IS
x varchar(200);
i int;
begin if :search.f_no is null then
	x:='1=1';
else
	x:='f_no='||:search.f_no;
end if;
-----------------------------------------------------
if :search.name1 is null then
	x:=x||' and 1=1';
	else
	X:=X||' and name1 like ''%'||:search.name1||'%''';
	end if;
	----------------------------------------------------
	if :search.name2 is null then
	x:=x||' and 1=1';
	else
	X:=X||' and name2 like ''%'||:search.name2||'%''';
	end if;
	---------------------------------------------------
	if :search.name3 is null then
	x:=x||' and 1=1';
	else
	X:=X||' and name3 like ''%'||:search.name3||'%''';
	end if;
	-----------------------------------------------------
	if :search.name4 is null then
	x:=x||' and 1=1';
	else
	X:=X||' and name4 like ''%'||:search.name4||'%''';
	end if;
	------------------------------------------------------
		if :search.day_date is null then
	x:=x||' and 1=1';
	else
	X:=x||' and f_date =:search.day_date  ';
	end if;
	------------------------------------------------------
		if :search.compony is null then
	x:=x||' and 1=1';
	else
	X:=x||' and c_name like ''%'||:search.COMPONY||'%''' ;
	end if;
	------------------------------------------------------
		if :search.nation is null then
	x:=x||' and 1=1';
	else
	X:=x||' and n_no ='||:search.nation  ;
	end if;
	--------------------------------------------------------
		if :search.sex is null then
	x:=x||' and 1=1';
	else
	X:=x||' and sex ='||:search.sex  ;
	end if;
	--------------------------------------------------------
		if :search.f_type is null then
	x:=x||' and 1=1';
	else
	X:=x||' and f_type ='||:search.f_type  ;
	end if;
	-----------------------------------------------------
		if :search.addrese is null then
	x:=x||' and 1=1';
	else
	X:=x||' and addres =:search.addrese ';
	end if;
	-----------------------------------------------------
	if :search.TALAPHON is null then
	x:=x||' and 1=1';
	else
	X:=x||' and TALAPHON =:search.TALAPHON ';
	end if;
	-----------------------------------------------------
	if :search.date1 is null or :search.date2 is null then
	x:=x||' and 1=1';
	else
	X:=x||' and f_date between :search.date1 and :search.date2  ';
	end if;
	-----------------------------------------------------
set_block_property('files1',default_where,x);
go_block('files1');
clear_block(no_validate);
execute_query;
-------------------------------------------------------------------------------------------------------------
go_block('files1');
last_record;
i:=:system.cursor_record;
first_record;
for x in 1..i loop
:name:=:files1.name1||' '||:files1.name2||' '||:files1.name3||' '||:files1.name4;
next_record;
end loop;
----------------------------------------------------------------------------------------------------------------
go_block('files1');
last_record;
i:=:system.cursor_record;
first_record;
for x in 1..i loop
if :files1.f_type=1 then
:files1.f_type1:='ÚÜÇÏí';
elsif:files1.f_type=2 then
:files1.f_type1:='ÔÜÑßÉ';
elsif :files1.f_type=3 then
:files1.f_type1:='ÚÜÇÆáí';	
end if;
next_record;
end loop;
	-------------------------------------------------------------------------------------------------------------------
go_block('files1');
last_record;
i:=:system.cursor_record;
first_record;
for x in 1..i loop
if :files1.n_no is null then
	:files1.n_no1:=null;
else
	select n_name into :files1.n_no1 from nation where n_no=:files1.n_no;
end if;
next_record;
end loop;

first_record;
END;


---------------------

تم تعديل بواسطة Amgad

بتاريخ:

السلام عليكم

اخى الفاضل ..

للاسف لن استطيع ان اقدم لك جديد .. و لاكن اريد منك الجديد ..

اذا امكن .. شرح بعض النقط بالكود و اطون شاكر لذلك جدا ..

1-

كـود PHP
if :search.TALAPHON is null then
x:=x||' and 1=1';
else
X:=x||' and TALAPHON ='||:search.TALAPHON ;
end if;


و بالاخص السطر الثانى ..فما الفكرة التى مكتوبه هنا ؟

اخى عندى ايضا استفسار .. و اعتقد انه ممكن يكون سبب فى البط .. مع انه المفروض لا يخرج بيانات اصلا و لاكن دعونا نرى :

اخى انت قمت بعمل متغير اسمه x و قمت باستخدامه اكثر من مرة .. و اعتقد ان هذا .. سوف يقوم بعمل بطئ طبيعى جدا حيث ان قيمه المتغيرمتغيرة شكلا و موضوعا كل مرة . .. والله اعلم

شكرا
بتاريخ:
  • كاتب الموضوع

اخي انت لو كتبت هذا الاستعلام في sql
select ename from emp where empno=1=1 and deptno=1=1;
لايكون هناك اي تاثير بالبيانات بسبب الشرط
فانا هنا اقول له اذاكان خانة رقم التلفون فاضى خلي x=1=1
والا اعطي x:=050505050
بما ان الاستعلام باكثر من قيمة سوف تتكون معي سلسلة من الشرط
select ename from emp where x;
ارجو ان تكون وصلت الفكره وهذه الطريقة جيده حيث تعطيك بيانت دقيقة ومظبوطة وتسمى الاستعلام المتقدم

بتاريخ:

السلام عليكم
حركة اللوب LOOP فى الداتا بيز عندك لازم هتاخد وقت لانك بتنفذ الاستعلام باللوب ثم تتحقق من الشروط ؛ المقصود من كلامي ان الكود بتاعك بينفذ اللوب حتي لو لم يتحقق الشرط وقد تسال لما تنفذ اللوب حتى عندما لا يتحقق الشرط ؟ وذلك لان سيان BASIC LOOP - OR - FOR I IN كلاهما ينفذ اللوب ثم يتحقق من الشرط وحتى لا اطيل عليك فى الكلام فانصحك باستخدام while LOOP وسوف توفر لك ثلث الوقت على الاقل
جرب وابلغنا
وشكرا
ميجا

بتاريخ:

ابتعد عن استخدام Loop والـ PROCEDURE

واستخدم FUNCTION مثل هذه

FUNCTION Get_Cond RETURN VARCHAR2
IS
Cond Varchar2(2000) := ' (1=1) ';
BEGIN
 If :acc_num.w_yer is not null Then 
	  Cond:=Cond || ' And mtlb_yer = :acc_num.w_yer';
 End if;	
 If :acc_num.w_num is not null Then 
	  Cond:=Cond || ' And mtlb_num = :acc_num.w_num';
 End if;
Return ('where ' || cond);   
END;



ثم عند الاستعلام استخدم

SET_BLOCK_PROPERTY('****',DEFAULT_WHERE,get_cond);
execute_query;
SET_BLOCK_PROPERTY('****',DEFAULT_WHERE,'1=1');

بتاريخ:
  • كاتب الموضوع

اخواني وصات الى حل وهو
عند البحث بالاسم انا عامل
في الكود ان يحتوى حقل الاسم عل هذا الكلمة في البحث
وهذا ياخذ وقت طويل

select ename from emp where ename like '%'||:ename||'%';


والان عملت ان يبدا بالكلمة وطلع اسرع وتمام

select ename from emp where ename :ename ||'%';


----------------------------------------
ارجو ان تكون اتضخت الفكره حتى يستفيد الجميع

بتاريخ:

السلام عليكم

الحمد لله انك توصلت للحل

قكرة الأخ / Mr_CoBoL فكرة ممتازه والكثير يستخدمها

اقترح عليك استخدام الاسلوبين معا داخل البرنامج ... حسب اختيار المستخدم

اقترح عليك ان تضيف على الشاشة ... اختيار للمستخدم مثل radio Button

البحث فى حالة ان الاسم يبدأ ب ..........
أو
البحث فى حالة ان الاسم يحتوى على ...........

شكرا لك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.