Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az elsődleges kulcskorlátozások, amelyek a táblák mezői közötti kapcsolatokat rögzítik, segíthetnek a felhasználóknak és az eszközöknek megérteni az adatokban lévő kapcsolatokat. Ez a cikk példákat tartalmaz, amelyek bemutatják, hogyan használhat elsődleges kulcsokat a RELY beállítással bizonyos gyakori lekérdezéstípusok optimalizálásához.
Jegyzet
A parancshoz társított lekérdezésoptimalizálások megkövetelik, hogy a RELY lekérdezések Photon-kompatibilis számításon fussanak. Lásd Mi az a Photon?. A photon alapértelmezés szerint fut az SQL-raktárakon és a jegyzetfüzetek és munkafolyamatok kiszolgáló nélküli számításán. A Photonről további információt a Mi a Photon? című témakörben talál.
Elsődleges kulcskorlátozások hozzáadása
A táblalétrehozás utasításában az alábbi példához hasonlóan felvehet egy elsődlegeskulcs-korlátozást, vagy hozzáadhat egy korlátozást egy táblához a ADD CONSTRAINT záradék használatával.
CREATE TABLE customer (
c_customer_sk int,
PRIMARY KEY (c_customer_sk)
...
)
Ebben a példában c_customer_sk az ügyfél-azonosító kulcs látható. Az elsődleges kulcsra vonatkozó korlátozás azt határozza meg, hogy minden ügyfél-azonosító értéknek egyedinek kell lennie a táblában. Az Azure Databricks nem kényszeríti ki a kulcskorlátozásokat. Ezek a meglévő adatfolyamon vagy ETL-en keresztül érvényesíthetők. Tekintse meg a 'Az adatminőség kezelése a folyamatokkal szembeni elvárásokkal' című részt a streamelő táblák és a materializált nézetek várható működésének megismeréséhez. Tekintse meg az Azure Databricks korlátozásait , hogy megismerje a Delta-táblákra vonatkozó korlátozásokat.
Jegyzet
A felhasználó felelőssége annak ellenőrzése, hogy a korlátozás teljesül-e. Ha olyan kényszerre támaszkodik, amely nem teljesül, helytelen lekérdezési eredményekhez vezethet.
RELY Optimalizálás engedélyezése
Ha tudja, hogy az elsődleges kulcs kényszere érvényes, a kényszer alapján engedélyezheti az optimalizálásokat a RELY beállítással történő megadásával. A teljes szintaxist lásd ADD CONSTRAINT záradék.
A RELY lehetőség lehetővé teszi, hogy az Azure Databricks kihasználja a lekérdezések újraírására vonatkozó kényszert. A következő optimalizálások csak akkor hajthatóak végre, ha a RELY beállítás egy ADD CONSTRAINT záradékban vagy ALTER TABLE utasításban van megadva.
A ALTER TABLE használatával módosíthatja egy tábla elsődleges kulcsát, hogy belefoglalja a RELY beállítást, ahogy az az alábbi példában is látható.
ALTER TABLE
customer DROP PRIMARY KEY;
ALTER TABLE
customer
ADD
PRIMARY KEY (c_customer_sk) RELY;
Optimalizálási példák
Az alábbi példák kiterjesztik az előző példát, amely létrehoz egy customer táblát, ahol a c_customer_sk egy ellenőrzött egyedi azonosító, amelyet PRIMARY KEY néven neveznek el a megadott RELY beállítással.
1. példa: Szükségtelen összesítések kiküszöbölése
Az alábbiakban egy lekérdezés látható, amely egy DISTINCT műveletet alkalmaz egy elsődleges kulcsra.
SELECT
DISTINCT c_customer_sk
FROM
customer;
Mivel a c_customer_sk oszlop ellenőrzött PRIMARY KEY kényszer, az oszlop összes értéke egyedi. A RELY beállítás megadásával az Azure Databricks úgy optimalizálhatja a lekérdezést, hogy nem hajtja végre a DISTINCT műveletet.
2. példa: Szükségtelen illesztések kiküszöbölése
Az alábbi példa egy olyan lekérdezést mutat be, amelyben az Azure Databricks kiküszöbölheti a szükségtelen illesztéseket.
A lekérdezés egy ténytáblát illeszt össze, store_sales dimenziótáblával, customer. Bal oldali külső illesztést hajt végre, így a lekérdezés eredménye tartalmazza a store_sales táblából származó összes rekordot, valamint a customer tábla egyező rekordjait. Ha a customer táblában nincs egyező rekord, a lekérdezés eredménye a NULL oszlop c_customer_sk értékét jeleníti meg.
SELECT
SUM(ss_quantity)
FROM
store_sales ss
LEFT JOIN customer c ON ss.customer_sk = c.c_customer_sk;
Annak megértéséhez, hogy miért szükségtelen ez az illesztés, fontolja meg a lekérdezési utasítást. Csak a ss_quantity táblából származó store_sales oszlopra van szükség. A customer táblát az elsődleges kulcsán kapcsolják össze, így a store_sales minden sora legfeljebb egy sorral egyezik meg a customer-ben. Mivel a művelet külső illesztés, a store_sales tábla összes rekordja megmarad, így az illesztés nem módosít adatokat a táblából. A SUM aggregáció ugyanaz, függetlenül attól, hogy ezek a táblák csatlakoznak-e.
Az elsődleges kulcskorlátozás RELY használatával a lekérdezés-optimalizálónak megadja az illesztés megszüntetéséhez szükséges információkat. Az optimalizált lekérdezés a következőképpen néz ki:
SELECT
SUM(ss_quantity)
FROM
store_sales ss
Következő lépések
Tekintse meg Az entitáskapcsolat diagram című témakört, amelyből megtudhatja, hogyan vizsgálhatja meg az elsődleges kulcs- és idegenkulcs-kapcsolatokat a Katalóguskezelő felhasználói felületén.