الانتقال إلى المحتوى
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

بتاريخ:

إخواني الكرام في هذا المنتدى المبارك
أنا شغال على اوراكل 10جي وجهازي راماته عاليه والمعالج كمان

هل من مساعدة في حذف سجلات كثيرة قد تتجاوز نصف مليون سجل أو أكثر بسرعة بدون التأثير على باقي السجلات


يعني لا اريد حذف كامل السجلات فقط محددة
علما بانني استخدمت مقطع where ولكني لاحظت ان القاعدة تعلق ولا يتم الحذف الا بعدد قليل من السجلا


مثلا الجدول fatm عندي مكون من اربعة حقول الحقل الأول رقمي rgm والثاني نصي esm والثالث نصي name والرابع رقمي ID

فوضعت الأامر على النحو التالي

Delete from fatm where id=2;



ولكن لم يتم التنفيذ لان مجموعة السجلات بالألوف


فهل من مساعد لي في ذلك ولكم الشكر والامتنان

بتاريخ:

اعتقد لو عملت index الاول على الجدول على العمود id قبل عمليه الحذف العمليه هتكون اسرع و لو ان هى طبيعة العملية اكيد هتاخد وقت الى حد ما

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

أخي الكريم شكرا لتفاعلك ولكن هل من الممكن كتابة كيفية عمل اندكس لهذا الجدول وكيف يكتب الكو د في sql

ولك خالص تحياتي وساقوم ان شاء الله بالتجربة واعطائك النتائج

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

شكرا جزيلا اخي على ردك ولكن حاولت انشاء اندكس بنفس الكود ولم انجح

هل من الممكن شرح مقاطع الكود

اندكس نيم هل تقصد اسمي الاندكس
وتيبل نيم تقصد اسم الجدول المراد الحذف منه

والعبارة الاخيرة بين القوسين ماذا يراد بها

وهل من الممكن ان تكتب الكود على نفس اسم الجدول الخاص بي
ولك خالص تحياتي

بتاريخ:

السلام عليكم...

بالنسبة لتسريع الأداء هناك حل و لكن يختلف حسب الحالة .
جرب هذا الكود و أخبرني بالنتائج .

أنا قمت بتجربته على جدول و لاحظت الفرق الكبير بين الطريقتين كالتالي:
في الحالة العادية استغرق حذف 3,809,280 سجل 140 ثانية
بينما في الحالة الثانية استغرق حذف 3,809,280 سجل 28 ثانية

SQL> select count(*) from testd2;

 COUNT(*)
----------
 10158080

SQL> select count(*) from testd2 where deptno=20;

 COUNT(*)
----------
  3809280



طريقة الحذف العادية مع قياس المدة:

SQL> declare
 2  p1 number;
 3  p2 number;
 4  begin 5  select to_number(to_char(sysdate,'mi'))*60+to_number(to_char(sysdate,'ss')) into p1 from dual;
 6  delete from testd2 where deptno=20;
 7  commit;
 8  select to_number(to_char(sysdate,'mi'))*60+to_number(to_char(sysdate,'ss')) into p2 from dual;
 9  dbms_output.put_line(p2-p1);
10  end;
11  /

140

PL/SQL procedure successfully completed.



الطريقة الثانية :

SQL> declare
 2  p1 number;
 3  p2 number;
 4  begin 5  select to_number(to_char(sysdate,'mi'))*60+to_number(to_char(sysdate,'ss')) into p1 from dual;
 6  execute immediate 'create table tt as select * from testd2 where deptno<>20';
 7  execute immediate 'drop table testd2';
 8  execute immediate 'rename tt to testd2';
 9  select to_number(to_char(sysdate,'mi'))*60+to_number(to_char(sysdate,'ss')) into p2 from dual;
10  dbms_output.put_line(p2-p1);
11  end;
12  /

28

PL/SQL procedure successfully completed.

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

بتاريخ:

مرحبا
جرب :

CREATE INDEX INDX_FATM_ID ON FATM(ID);


DELETE FROM FATM WHERE ID=2;

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

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



أمر أخر لو كان الحذف لجدول ماستر وجدول ديتيلز كيف ينفذ هذا الكود علما بانني نفذته وتم حذف السجلات لكن سجلات جدول الديتيليز تبقى كما هي



شكرا جزيل وأرجو التفاعل

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

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

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

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

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

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.