التخطي إلى المحتوى الرئيسي

أوراكل وتحديد عدد الصفوف الناتجة

لم أعتد العمل على ORACLE، كانت قاعدة البيانات التي أستخدمها عادة هي mysql، لكن في وظيفتي الجديدة كان علي أن أعمل على جلب البيانات لبرنامجي من قاعدة أوراكل، كانت المشكلة هي في تحديد عدد الصفوف الناتجة عن عملية البحث، وهي ما يفترض بها أن تتم ببساطة عن طريق كلمة limit في نهاية جملة SQL.

إلا أنها لم تعمل اطلاقا، بقليل من البحث (ومساعدة من مدير قواعد البيانات) وجدت التالي:
في أوراكل تجعل جملتك بالكامل جملة فرعية داخل الجملة الأكبر التي تقوم بالتحديد، خذ باعتبارك أن كل صف في أوراكل يسبقه حقل ROWNUM المشير لرقم الحقل، قم بتضمينه في الجدول وأعطه اسما بديلا لتتمكن من التعاطي معه في جملة التحديد الخارجية.

مثلا، إذا كانت جملتك هي:
SELECT f1,f2,f3 FROM my_table

  • عليك أولا أن تقوم باضافة حقل يحمل أرقام الصفوف كالتالي:
SELECT ROWNUM rn, f1, f2, f3 FROM my_table
  • الآن صارت الجملة السابقة جدولا يمكنك وضعه كجملة فرعية في جملة تحديد أكبر، كالتالي:
SELECT * FROM (SELECT ROWNUM rn, f1, f2, f3 FROM my_table) WHERE rn BETWEEN :Min AND :Max
وهذه الطريقة ليست الأسرع وإن كانت الأوضح منطقيا في كتابتها، بهذه الطريقة يقوم محرك قاعدة البيانات بجلب الجدول كاملا ثم انتقاء الصفوف بين الحد الأدنى والحد الأعلى..على أحد المواقع وجدت حلولا أسرع..

لننتقل إلى أسرع هذه الحلول مباشرة، وحسب تجاربي على جملة تعدت نتيجتها 110 ألف صف، كان الفارق حوالي ثانيتين في سرعة انجاز العملية، آخر شارك تجربة في الرابط السابق على تسعة ملايين صف وكان الفارق بالدقائق..

  • الآن معنا الجملة الداخلية مع حقل الأرقام:
SELECT ROWNUM rn, f1, f2, f3 FROM my_table

  • قم بتحديد الحد الأقصى في نفس الجملة الداخلية، حيث يجب أن يصل الجدول بالطريقة التالية:
SELECT ROWNUM rn, f1, f2, f3 FROM my_table WHERE ROWNUM <= :Max 
  •  والآن، قم بتحديد الحد الأدنى في الجملة الخارجية:
SELECT * FROM (SELECT ROWNUM rn, f1, f2, f3 FROM my_table WHERE ROWNUM <= :Max ) WHERE rn>= :Min



بالطبع تتفاوت السرعة حسب مدى البحث، البحث في آخر الجدول سيكون أبطأ من البحث في أوله، لكنه أسرع من الطريقة الأولى بفارق ملحوظ..

الخلاصة، لا تحاول استخدام كلمة limit عندما تكون قاعدة البيانات مكتوبة بأوراكل..
اقرأ أيضا:



تعليقات

المشاركات الشائعة من هذه المدونة

ادارة كلمات سر المستخدمين

  إذا كنت تقوم ببرمجة موقع يحتاج إلى عمل حسابات للمستخدمين، فيجب أن تقوم بتأمين كلمات السر الخاصة بهم إلى أقصى حد ممكن، ومن ذلك طريقة حفظها في قاعدة البيانات، فرغم كل اجراءاتك الأمنية، يجب أن تفترض احتمال تسرب قاعدة البيانات، وفي حال تسربت قاعدة البيانات، لا يجب أن يتمكن المخترق من معرفة كلمات السر الخاصة بالمستخدمين..كيف يمكن ذلك؟ باختصار، لا يجب أن تقوم بتخزين أية كلمات سر في أي مكان في موقعك، ما سوف تختزنه في جدول المستخدمين هو قيمة الهاش، مضافا إليها ما يتعارف عليه بالملح salt ، وهي قيمة عشوائية تدمج بكلمة السر قبل التشفير، قيم الهاش وخوارزمياتها تختلف، في حال تخزين كلمات السر، أنصحك باستخدام خوارزمية بطيئة مثل bcrypt مع عمل سياسة لقبول كلمات السر بحيث لا تقل عن 8 حروف ولا تزيد عن 100 حرف. لكن ماهو الهاش؟ الهاش هو عملية غير عكسية، يشكل ما يشبه البصمة لأي بيانات مدخلة، بالتالي، إذا حصل الهاكر على الهاش فلا يوجد أي طريقة ليعكس عملية الهاش نفسها ويصل للباسوورد، تماماً كما لا يمكنني التعرف على صورة وجهك من خلال بصمة اصبعك. طيب ماذا يفعل الهاكر عند حصوله على الهاش؟ هناك العديد من ال...

هل يفهم GPT-4o الفرانكو؟

 تجربة كان الغرض منها اختبار قدرة نموذج GPT-4o على فهم نصوص الفرانكو، كان هذا لينهي معاناتي مع هذه اللغة الشائهة.. حسنا لم ينجح تماماً، لنأمل أن تنقرض هذه اللغة!

فعالية Advent of Cyber

خبر سعيد لمن يود دخول مجال أمن المعلومات.. تطلق منصة Try Hack Me فعالية جديدة ترعاها شركات كبرى في مجال تدريب المخترقين الأخلاقيين، الفعالية تبدأ أونلاين ابتداء من الأول من ديسمبر (كانون الأول) وصولاً للخامس والعشرين من نفس الشهر، وهي تعتمد نفس الأسلوب المتبع على منصة Try Hack Me، باعتماد المعامل  والتطبيق العملي للمهارات  أولا بأول، ستفتتح يومياً عدد من المعامل المرفقة بأسئلة على طريقة CTF المعتمدة في المسابقات، ومع نهاية الفعالية تحصل على شهادة من Try Hack Me، كما سيجري سحب على جوائز قيمة، وكلما اجتزت تحديات أكثر، كلما زادت فرصتك في الفوز.. الجزء الأفضل؟.. تكاليف التسجيل هي 0$ ، الفعالية مجانية بالكامل، فقط أنشئ حساب على موقع TryHackMe، ثم سجل في الغرفة المرفق رابطها أعلاه، وقم باتمام المهام، ومتابعة العمل لخمسة وعشرين يوماً.. كما يمكنك تسجيل اشتراك مدفوع على موقع Try Hack Me إذا أردت استخدام بيئة اختراق جاهزة عبر المتصفح، رسومهم في المتناول كما يمكنك الحصول على تخفيض للاشتراك السنوي بمناسبة الفعالية. بخلاف هذه الفعالية، فالموقع ملئ بالمعامل والمختبرات العملية الرائعة المناس...