مشاركة عبر


تحسين الاستعلام باستخدام قيود المفتاح الأساسي

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

إضافة قيود المفتاح الأساسي

يمكنك إضافة قيد مفتاح أساسي في عبارة إنشاء الجدول، كما في المثال التالي، أو إضافة قيد إلى جدول باستخدام ADD CONSTRAINT عبارة .

CREATE TABLE customer (
  c_customer_sk int,
  PRIMARY KEY (c_customer_sk)
  ...
  )

في هذا المثال، c_customer_sk هو مفتاح معرف العميل. يحدد قيد المفتاح الأساسي أن كل قيمة معرف عميل يجب أن تكون فريدة في الجدول. لا يفرض Azure Databricks قيود المفتاح. يمكن التحقق من صحتها من خلال البنية الأساسية لبرنامج ربط العمليات التجارية للبيانات الموجودة أو ETL. راجع إدارة جودة البيانات باستخدام Delta Live Tables للتعرف على توقعات العمل على جداول الدفق وطرق العرض المجسدة. راجع القيود على Azure Databricks لمعرفة المزيد حول العمل مع القيود على جداول Delta.

استخدم RELY لتمكين التحسينات

عندما تعرف أن قيد المفتاح الأساسي صالح، يمكنك تمكين التحسينات استنادا إلى القيد عن طريق تحديده مع RELY الخيار . راجع عبارة ADD CONSTRAINT لبناء الجملة الكامل.

RELY يسمح الخيار ل Azure Databricks باستغلال القيد لإعادة كتابة الاستعلامات. يمكن تنفيذ التحسينات التالية فقط إذا RELY تم تحديد الخيار في ADD CONSTRAINT عبارة أو ALTER TABLE عبارة.

باستخدام ALTER TABLE، يمكنك تعديل المفتاح الأساسي لجدول لتضمين RELY الخيار، كما هو موضح في المثال التالي.


ALTER TABLE
  customer DROP PRIMARY KEY;
ALTER TABLE
  customer
ADD
  PRIMARY KEY (c_customer_sk) RELY;

أمثلة التحسين

تعمل الأمثلة التالية على توسيع المثال السابق الذي ينشئ جدولا customer حيث c_customer_sk يكون معرفا فريدا تم التحقق منه يسمى ك PRIMARY KEY مع RELY تحديد الخيار .

مثال 1: إزالة التجميعات غير الضرورية

يعرض التالي استعلاما يطبق DISTINCT عملية على مفتاح أساسي.

SELECT
  DISTINCT c_customer_sk
FROM
  customer;

c_customer_sk نظرا لأن العمود قيد تم PRIMARY KEY التحقق منه، فإن جميع القيم في العمود فريدة. RELY مع تحديد الخيار، يمكن ل Azure Databricks تحسين الاستعلام عن طريق عدم تنفيذ DISTINCT العملية.

مثال 2: إزالة الصلات غير الضرورية

يوضح المثال التالي استعلاما حيث يمكن ل Azure Databricks إزالة صلة غير ضرورية.

ينضم الاستعلام إلى جدول حقائق، store_sales مع جدول أبعاد، customer. ينفذ صلة خارجية اليسرى، بحيث تتضمن نتيجة الاستعلام جميع السجلات من store_sales الجدول والسجلات المتطابقة customer من الجدول. إذا لم يكن هناك سجل مطابق في customer الجدول، تظهر NULL نتيجة الاستعلام قيمة للعمود c_customer_sk .

SELECT
  SUM(ss_quantity)
FROM
  store_sales ss
  LEFT JOIN customer c ON ss.customer_sk = c.c_customer_sk;

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

استخدام قيد المفتاح الأساسي مع RELY يعطي محسن الاستعلام المعلومات التي يحتاجها لإزالة الصلة. يبدو الاستعلام المحسن كما يلي:

SELECT
  SUM(ss_quantity)
FROM
  store_sales ss

الخطوات التالية

راجع عرض الرسم التخطيطي لعلاقة الكيان لمعرفة كيفية استكشاف علاقات المفتاح الأساسي والمفتاح الخارجي في واجهة مستخدم مستكشف الكتالوج.