本頁面將說明搜尋和次要索引的功能。
在決定要使用搜尋索引還是次要索引時,請注意,搜尋索引應是全文用途的預設選擇,而次要索引則應是其他用途的預設選項。下表說明各類索引的使用時機。
功能 | 次要索引 | 搜尋索引 |
---|---|---|
排列順序 | 索引會依據所有索引鍵欄排序 | 搜尋索引只能依據最多兩個使用者控制的 INT64 欄進行排序 |
陣列 | 您無法在次要索引中使用陣列資料類型值做為索引鍵。 | 搜尋索引支援陣列索引。文件的所有符記都會位於同一個區段。因此,變更 1 列的交易只會寫入一個索引分割項目。 |
JSON/JSONB | 您無法在次要索引中使用 JSON 值做為索引鍵。 | 搜尋索引支援 JSON 值的索引。 |
查詢 | 按索引鍵查詢只需要存取一個分割區 | 使用搜尋索引的查詢通常需要從特定分區的所有分割區讀取資料。唯一的例外狀況是 Top-K 模式比對。 |
多欄索引 | 次要索引可包含多個索引鍵欄。查詢必須依據索引鍵欄的前置字串查詢資料,才能有效執行。 | 搜尋索引可為多個資料欄建立索引。查詢可在任何已編入索引的資料欄子集上指定複雜的邏輯運算式 (連接詞、析取詞、否定詞),並且仍能有效執行 |
索引交集 | 使用者可以重新撰寫查詢,以便彙整多個次要索引。 | 多個已編入索引的資料欄的交集會以高效率的本機「之字型」彙整方式實作,接著再執行分散式合併聯集 (合併所有相關分割的結果)。 |
讀取資料 | SQL 查詢或讀取 API | SQL 查詢 |
除了語意之外,用來建立搜尋索引的 DDL 陳述式語法,與用來建立次要索引的 DDL 語法不同:
- 索引資料欄的定義與搜尋索引中的排序順序分開。
CREATE SEARCH INDEX
陳述式的ON
子句中TOKENLIST
欄的順序不重要。