日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

JSON索引

更新時間:

為降低處理半結(jié)構(gòu)化數(shù)據(jù)的難度,提升查詢效率,AnalyticDB for MySQL提供了半結(jié)構(gòu)化數(shù)據(jù)檢索功能,即JSON索引。本文主要介紹如何創(chuàng)建JSON索引和JSON Array索引。

JSON索引介紹

AnalyticDB for MySQL支持創(chuàng)建JSON索引和JSON Array索引。通過為存儲在JSON列中的數(shù)據(jù)創(chuàng)建JSON索引或JSON Array索引,可以避免在查詢數(shù)據(jù)時掃描全表數(shù)據(jù)或?qū)φ麄€JSON文檔進(jìn)行解析,從而提升數(shù)據(jù)查詢效率。JSON索引主要適用于存儲和查詢復(fù)雜半結(jié)構(gòu)化數(shù)據(jù)的場景,例如日志信息、配置文件、設(shè)備信息等。

注意事項

  • JSON索引和JSON Array索引的列數(shù)據(jù)類型必須為JSON。

  • 一個JSON索引或JSON Array索引僅能包含一個JSON列。如需對多個JSON列創(chuàng)建索引,可創(chuàng)建多個JSON索引或JSON Array索引。

創(chuàng)建JSON索引

創(chuàng)建JSON索引時,您還需注意以下內(nèi)容:

  • 3.1.5.10及以上內(nèi)核版本的集群,創(chuàng)建表后不會自動創(chuàng)建JSON索引,您需手動創(chuàng)建JSON索引。

  • 3.1.5.10以下內(nèi)核版本的集群,創(chuàng)建表后會自動為JSON列創(chuàng)建JSON索引。

說明

查看企業(yè)版湖倉版集群的內(nèi)核版本,請執(zhí)行SELECT adb_version();。如需升級內(nèi)核版本,請聯(lián)系技術(shù)支持。

創(chuàng)建表時創(chuàng)建JSON索引

注意事項

若您在建表時手動指定為某一列或某幾列創(chuàng)建INDEX索引,AnalyticDB for MySQL不會再為表中其他列自動創(chuàng)建INDEX索引。

語法

CREATE TABLE table_name(
  column_name column_type,
  {INDEX|KEY} [index_name](column_name|column_name->'$.json_path')
)
DISTRIBUTED BY HASH(column_name)

參數(shù)說明

參數(shù)

說明

index_name

JSON索引名稱。

重要

索引名稱唯一,不能相同。

column_name|column_name->'$.json_path'

  • column_name:JSON索引的列。

  • column_name->'$.json_path':JSON索引的列及其指定的屬性鍵。每一個JSON索引只能有一個JSON列的一個屬性鍵。

    重要
    • 僅3.1.6.8及以上內(nèi)核版本的集群支持column_name->'$.json_path

      • 查看企業(yè)版基礎(chǔ)版湖倉版集群的內(nèi)核版本,請執(zhí)行SELECT adb_version();。如需升級內(nèi)核版本,請聯(lián)系技術(shù)支持。

      • 查看和升級數(shù)倉版集群的內(nèi)核版本,請參見查看和升級版本

    • 為JSON列中的指定屬性鍵創(chuàng)建索引時,若該JSON列已存在INDEX索引,需先刪除該列的INDEX索引,否則會報錯。

建表語句的其他參數(shù),請參見CREATE TABLE

示例

  • json_test表中的JSON列vj創(chuàng)建JSON索引。

    CREATE TABLE json_test(
      id int,
      vj json,
      index idx_vj(vj)
    )
    DISTRIBUTED BY HASH(id);
  • json_test表中JSON列vj的屬性鍵name創(chuàng)建JSON索引。

    CREATE TABLE json_test(
      id int,
      vj json COMMENT 
      index idx_vj_path(vj->'$.name')
    )
    DISTRIBUTED BY HASH(id);

為已存在的表創(chuàng)建JSON索引

語法

ALTER TABLE db_name.table_name ADD {INDEX|KEY} [index_name] (column_name|column_name->'$.json_path',...)

參數(shù)說明

參數(shù)

說明

db_name

數(shù)據(jù)庫名稱。

table_name

表名稱。

index_name

JSON索引名稱。

重要

索引名稱唯一,不能相同。

column_name|column_name->'$.json_path'

  • column_name:JSON索引的列。

  • column_name->'$.json_path':JSON索引的列及其指定的屬性鍵。每一個JSON索引只能有一個JSON列的一個屬性鍵。

    重要
    • 僅3.1.6.8及以上內(nèi)核版本的集群支持column_name->'$.json_path

      • 查看企業(yè)版基礎(chǔ)版湖倉版集群的內(nèi)核版本,請執(zhí)行SELECT adb_version();。如需升級內(nèi)核版本,請聯(lián)系技術(shù)支持。

      • 查看和升級數(shù)倉版集群的內(nèi)核版本,請參見查看和升級版本

    • 為JSON列中的指定屬性鍵創(chuàng)建索引時,若該JSON列已存在INDEX索引,需先刪除該列的INDEX索引,否則會報錯。

示例

  • json_test表中的JSON列vj創(chuàng)建JSON索引。

    ALTER TABLE json_test ADD KEY index_vj(vj);
  • json_test表中JSON列vj的屬性鍵name創(chuàng)建JSON索引。

    ALTER TABLE json_test ADD KEY index_vj_key(vj->'$.name');

創(chuàng)建JSON Array索引

3.1.10.6及以上內(nèi)核版本的集群支持創(chuàng)建JSON Array索引。創(chuàng)建JSON Array索引后,您可以使用JSON_CONTAINS和JSON_OVERLAPS函數(shù)檢索數(shù)據(jù),提高數(shù)據(jù)查詢效率。

注意事項

創(chuàng)建JSON Array索引時,AnalyticDB for MySQL僅會為數(shù)組中的數(shù)值和字符串類型元素構(gòu)建索引,不會為數(shù)組中的其他類型(例如嵌套數(shù)組、對象等)元素構(gòu)建索引。

創(chuàng)建表時創(chuàng)建JSON Array索引

語法

CREATE TABLE table_name(
  column_name column_type,
  {INDEX|KEY} [index_name](column_name->'$[*]')
)
DISTRIBUTED BY HASH(column_name);

參數(shù)說明

參數(shù)

說明

index_name

JSON Array索引名稱。

重要

索引名稱唯一,不能相同。

column_name->'$[*]'

column_name為JSON Array索引的列。例如:vj->'$[*]'表示為vj列創(chuàng)建JSON Array索引。

示例

json_test表中的JSON列vj創(chuàng)建JSON Array索引。

CREATE TABLE json_test(
  id int,
  vj json,
  index idx_vj_array(vj->'$[*]')
)
DISTRIBUTED BY HASH(id);

為已存在的表創(chuàng)建JSON Array索引

注意事項

使用ALTER TABLE語句創(chuàng)建JSON Array索引,需要等待BUILD完成后,JSON Array索引才能生效。自動BUILD、手動BUILD以及BUILD任務(wù)的進(jìn)度,請參見BUILD

語法

ALTER TABLE db_name.table_name ADD {INDEX|KEY} [index_name] (column_name->'$[*]')

參數(shù)說明

參數(shù)

說明

db_name

數(shù)據(jù)庫名稱。

table_name

表名稱。

index_name

JSON Array索引名稱。

重要

索引名稱唯一,不能相同。

column_name->'$[*]'

column_name為JSON Array索引的列。例如:vj->'$[*]'表示為vj列創(chuàng)建JSON Array索引。

示例

json_test表中的JSON列vj創(chuàng)建JSON Array索引。

ALTER TABLE json_test ADD KEY index_vj(vj->'$[*]');

刪除索引

語法

ALTER TABLE db_name.table_name DROP KEY index_name

參數(shù)說明

index_name:普通索引名稱。您通過SHOW INDEX FROM db_name.table_name;查詢index_name

示例

  • 刪除customer表中名為age_idx的索引。

    ALTER TABLE adb_demo.customer DROP KEY age_idx;
  • 刪除json_test表中名為index_vj的JSON Array索引。

    ALTER TABLE adb_demo.customer DROP KEY index_vj;

相關(guān)文檔

如何檢索JSON數(shù)據(jù),請參見JSON函數(shù)