"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > داخل ينضم SQL

داخل ينضم SQL

تم النشر بتاريخ 2024-11-07
تصفح:735

Inside SQL Joins

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

هيا بنا!

الانضمام المنطقي

هناك أنواع مختلفة من الصلات المنطقية في SQL. الأكثر شيوعًا هما الانضمام الداخلي والانضمام الخارجي. نستخدم هذه الصلات عندما نحتاج إلى استرداد البيانات من الجداول.

الانضمام المادي

يتم تنفيذ الصلات المادية داخل RDS. يكتب المستخدم الاستعلام باستخدام صلة منطقية ويستخدم RDS صلة فعلية لتنفيذ عمليات الصلة. هناك أنواع مختلفة من الصلات الفعلية مثل
1. حلقة متداخلة الانضمام
2. تجزئة الانضمام
3. دمج الانضمام وما إلى ذلك

الانضمام إلى الحلقة المتداخلة

هذا هو نوع من الصلة حيث يتم تحديد جدول أصغر يحتوي على عدد أقل من السجلات ويتم تكراره خلال الجدول الآخر حتى يتم العثور على تطابق. هذا النوع من الارتباط متاح في MySQL، وPostgres، وحتى خوادم SQL. ومع ذلك، فهو ليس خيارًا قابلاً للتحجيم للجداول الكبيرة. يتم استخدامه بشكل أساسي في الحالات التي لا يستخدم فيها عامل الربط المساواة.

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

SELECT *
FROM cities
JOIN landmarks ON distance(cities.location, landmarks.location) 



تجزئة الانضمام

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

لنفترض أن لديك جدول "الموظف" الذي يحتوي على تفاصيل الموظف مثل المعرف والاسم ومعرف القسم، وجدول "القسم" الذي يحتوي على تفاصيل القسم مثل المعرف والاسم. تريد الانضمام إلى هذه الجداول للحصول على القسم الذي ينتمي إليه كل موظف

SELECT *
FROM Employee
JOIN Department ON Employee.department_id = Department.department_id;

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

دمج الانضمام

دمج الانضمام هو أسلوب يستخدم في تنفيذ استعلام SQL عندما يستخدم شرط الربط عامل مساواة ويكون كلا جانبي الصلة كبيرًا. تعتمد هذه التقنية على مدخلات البيانات المصنفة. إذا كان هناك فهرس للتعبيرات المستخدمة في عمود الربط، فيمكن استخدامه للحصول على البيانات التي تم فرزها بكفاءة. ومع ذلك، إذا كان الخادم بحاجة إلى فرز البيانات بشكل صريح، فمن الضروري تحليل الفهارس والنظر في تحسينها لتحسين الأداء.

مثال:
خذ بعين الاعتبار سيناريو يتضمن جدول "المبيعات" مع حركات المبيعات، بما في ذلك معرف البيع، ومعرف العميل، ومبلغ البيع، وجدول "العملاء" الذي يحتوي على تفاصيل العميل مثل معرف العميل، والاسم، والموقع.

SELECT *
FROM Sales
JOIN Customers ON Sales.customer_id = Customers.customer_id;

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

لتحسين عملية الدمج، يُنصح بإنشاء فهارس أو تعديلها في العمود "customer_id" في كلا الجدولين. يمكن أن يؤدي ضمان الصيانة المناسبة وتحسين هذه الفهارس إلى تحسينات كبيرة في أداء الاستعلام، خاصة بالنسبة للاستعلامات التي تتضمن بشكل متكرر صلات بناءً على عمود "customer_id".

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

وجه ربط حلقة متداخلة تجزئة الانضمام دمج انضم
شروط الانضمام عدم المساواة المساواة المساواة
حجم بيانات الإدخال صغيرة إلى متوسطة متوسطة إلى كبيرة كبير
فرز البيانات غير مطلوب غير مطلوب مطلوب
استخدام الذاكرة قليل متوسطة إلى عالية متوسطة إلى عالية
استخدام الفهرس ليس مصدر قلق رئيسي نافع يعتمد على الفهارس
الأداء (مجموعات بيانات كبيرة) أبطأ فعال فعال
قابلية التوسع أقل قابلية للتوسع قابلة للتطوير قابلة للتطوير
حالات الاستخدام النموذجية طاولات صغيرة إلى متوسطة الحجم جداول كبيرة ذات وصلات متساوية جداول كبيرة ذات وصلات متساوية
بيان الافراج تم نشر هذه المقالة على: https://dev.to/balajisasi/inside-sql-joins-5h6b?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3