圖表結構定義最佳做法
本文提供定義圖表結構定義的最佳做法,以提升圖表查詢效能。
設定資源定義的範圍
屬性是鍵/值組合,可提供附加至節點或邊緣的額外資訊。建議您只在節點或邊緣中加入必要屬性,並避免使用 PROPERTIES ALL COLUMNS 語法或預設語法,將節點或邊緣表格中的所有資料欄附加至屬性清單。節點或邊緣中含有大量屬性,可能會導致圖形查詢中出現不必要的資料欄掃描,進而降低效能。
如要限制節點或邊緣定義中包含的屬性,請在 CREATE PROPERTY GRAPH 陳述式中定義元素屬性時,使用 PROPERTIES 關鍵字。
下列節點資料表定義會將 Person 節點資料表的屬性限制為 id 和 name:
NODE TABLES (
graph_db.Person PROPERTIES (id, name)
)
在圖形節點和邊緣上定義主鍵和外鍵限制
BigQuery 可在節點和邊緣資料表上使用主鍵和外鍵限制,減少不必要的資料表掃描,進而最佳化圖形查詢。不過,BigQuery 不會對資料表強制執行主鍵或外鍵限制。如果應用程式無法保證參照完整性或主鍵的唯一性,使用主鍵或外鍵進行查詢最佳化可能會導致查詢結果不正確。
下列範例會在節點資料表 Person 和 Account,以及邊緣資料表 PersonOwnAccount 上定義主鍵和外鍵限制:
CREATE OR REPLACE TABLE graph_db.Person (
id INT64,
name STRING,
birthday TIMESTAMP,
country STRING,
city STRING,
PRIMARY KEY (id) NOT ENFORCED
);
CREATE OR REPLACE TABLE graph_db.Account (
id INT64,
create_time TIMESTAMP,
is_blocked BOOL,
nick_name STRING,
PRIMARY KEY (id) NOT ENFORCED
);
CREATE OR REPLACE TABLE graph_db.PersonOwnAccount (
id INT64 NOT NULL,
account_id INT64 NOT NULL,
create_time TIMESTAMP,
PRIMARY KEY (id, account_id) NOT ENFORCED,
FOREIGN KEY (id) references graph_db.Person(id) NOT ENFORCED,
FOREIGN KEY (account_id) references graph_db.Account(id) NOT ENFORCED
);
後續步驟
- 如要進一步瞭解圖表,請參閱「BigQuery 圖表簡介」。
- 如要進一步瞭解如何定義結構定義,請參閱結構定義總覽。
- 如要進一步瞭解如何編寫圖表查詢,請參閱圖表查詢總覽。