Mysql JSON索引与关联查询

JSON Path语法

// 比较简单,举两个例子
set @jsonSource = {
	"aaa": [
		{"ccc":"1"},
		{"ccc":"2"},
	],
	"bbb":"bbb的值"
};
@jsonSource-> "$.bbb"   // 结果为 bbb的值
@jsonSource-> "$.aaa[*].ccc" // 结果为 ["1","2"]

给JSON字段添加索引

Mysql 8.0.x版本后,支持对json字段创建索引,直接 create index 即可,需要使用cast方法将json目标字段转换成可以创建索引的类型。有两种情况:

普通索引:每条记录和json字段为1对1关系

多值索引:每条记录和json字段为1对多关系(对应array,或是jsonPath取值结果是array情况)

-- 普通索引
ADD INDEX index_modify_user((CAST(permission_json->'$.aaa' AS CHAR(64))))
-- 多值索引 (区别仅在于用cast 方法转化成一个 ARRAY)
ADD INDEX index_modify_user((CAST(permission_json->'$.modify[*]' AS CHAR(64) ARRAY )))

根据

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL中,可以通过使用ALTER TABLE语句或CREATE INDEX语句来创建关联字段索引。关联字段索引是一种特殊类型的索引,用于处理JSON对象字段或其他非标量数据类型。使用ALTER TABLE语句时,可以使用以下语法来创建关联字段索引: ALTER TABLE tbl_name ADD INDEX index_name (json_column_name); 其中,tbl_name是表名,index_name是所需索引的名称,json_column_name是包含JSON对象字段的列名。 另外,还可以使用CREATE INDEX语句来创建关联字段索引。例如,要创建一个唯一索引,可以使用以下语法: CREATE UNIQUE INDEX index_name ON tbl_name (json_column_name); 要创建一个全文索引,可以使用以下语法: CREATE FULLTEXT INDEX index_name ON tbl_name (json_column_name); 以上是创建关联字段索引的两种常用方法。通过使用这些方法,可以为包含JSON对象字段的列创建索引,以提高查询性能和优化数据访问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MySQLJSON字段创建索引(Multi-Valued Indexes 多值索引)](https://blog.csdn.net/qq_38688267/article/details/119383103)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [MySQL中四种方式给字段添加索引](https://blog.csdn.net/weixin_47681855/article/details/119895774)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值