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

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

لم أعتد العمل على 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 عندما تكون قاعدة البيانات مكتوبة بأوراكل..
اقرأ أيضا:



تعليقات

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

جدران النار - خطوط الدفاع

جدران النار Firewalls هي واحدة من أهم مواردك للدفاع عن الشبكة، هي الحراسة الخاصة على بوابتك للإنترنت. تأتي جدران النار بصور وأشكال مختلفة، فمن حيث طبيعتها، قد تكون أجهزة متخصصة appliances، أو برامج مختصة ، تماماً كمضاد الفيروسات. لكل من هذين النوعين مميزاته وعيوبه، فالأجهزة المختصة يمكنها أن تفرض القواعد العامة على مؤسسة كاملة مبقية التحكم في أيدي مديري الشبكة، كذلك تكون هذه الأجهزة محسنة لتقوم فقط بفلترة حزم البيانات الداخلة إلى الشبكة مما يقلل من امكانية تعطيلها بسبب ثغرات مختلفة بواسطة المخترقين، كما هناك في كثير منها، العديد من التقنيات الذكية الأحدث التي تتبنى تقنيات تعلم الآلة لتتمكن من ملاحظة أي سلوك غير مألوف (أو عدواني، ربما) على الشبكة الخاصة بك، والاستجابة الفورية.. كذلك، فهي قادرة إلى حد بعيد على حماية الأجهزة الذكية وانترنت الأشياء من عبث المخترقين، ربما لا تستطيع وضع برنامج جدار ناري على تلفزيونك الذكي وكاميرا المراقبة الأبوية في منزلك، لكنك تستطيع حماية بيئتك المنزلية من خلال جدار ناري على مصدر الانترنت. أما البرامج فهي في الغالب تستخدم لحماية جهاز بعينه، أو نقطة واحدة

هجمات التصيّد - الهندسة الاجتماعية

تعد هجمات التصيّد phishing هي واحدة من أشهر طرق وأساليب استخراج كلمات السر من الضحايا، وهي احدى أساليب الهندسة الاجتماعية، والتي يقصد بها خداع المستخدم للحصول منه على معلومات حساسة يقدمها طواعية إلى المخترقين. تعد هجمات التصيد من اﻷساليب الشائعة في عالم الاختراق ، تؤثر على العديد من اﻷفراد والشركات على مختلف المستويات، وهي تتم في الغالب بواسطة رسائل بريد إليكتروني تهدف لخداع المستخدم، فمثلاً قد تصلك رسالة من منصة التواصل الاجتماعي الخاصة بك تطلب منك اجراءاً عاجلاً، أو تخبرك أن ثم طلب اضافة من فتاة جميلة ينتظرك (مثلاً)، لقبول طلب الاضافة اضغط هنا. في حال استخدامك للرابط في الرسالة التي تبدو أصلية تماماً، وسيقودك الرابط إلى موقع شبيه بمنصة التواصل الاجتماعي الخاصة بك تماماً تطلب منك تسجيل الدخول، إلا أنه في الحقيقة موقع يخص المخترق، وستصله فوراً بياناتك التي سلمتها له طواعية. كيف تحمي نفسك من سرقة بياناتك؟ هناك العديد مما يمكن فعله هنا، لكن اﻷهم على الاطلاق هو: اليقظة والحذر الحس السليم وتقييم المواقف والفكر النقدي سلاحك هنا، تذكّر دائماً أنه ﻻ يوجد اجراء مستعجل إلى حد أن يمنعني من التف

جافاسكريبت JavaScript - الحلقة الثانية

حسناً، إذا كنت مهتماً بجافاسكريبت فلا شك أنك سمعت تعبير ECMAScript، ما هو؟..وما معناه؟ الواقع أن جافاسكريبت عندما اخترعت للمرة الأولى بواسطة إيريك بريندن سنة 1995 احتاجت لمعايير للغة، كلغة مفتوحة المصدر تحتاج لمعايير كي تمكن مصنعي المتصفحات من تبنيها بشكل موحد وصحيح، ظهرت هذه المعايير في صورة ECMAScript سنة 1997 لأول مرة، كعمل تحت التطوير المستمر، وصدر منها العديد من الاصدارات منذ ذلك الحين، ومع كل اصدار من هذه المعايير، يتم تبني الاصدار الأحدث تدريجياً في المتصفحات ومحركات جافاسكريبت. نستطيع القول بأن ECMAScript هي المعايير التي تحدد شكل اللغة، ومن خلالها تضاف التحديثات بشكل دوري. هذه حلقة قديمة للمهندس مدحت داود على يوتيوب، يشرح فيها تاريخ ECMAScript وماهيتها..أنصح بها بشدة، كما يشرح المهندس كثيرا من مفاهيم جافاسكريبت ومكتباتها في قناته..