mysql json字段
json字段取消双引号
extra_fields->>'$.buyer_nationality'
json_unquote(json_extract(content,'$.name'))
带双引号
extra_fields->'$.buyer_nationality'
建立虚拟字段 并建立索引
做了100万行json数据,测试结果
sql
SELECT * FROM cmf_third_party_user WHERE more->>"$.phone" = '13051450977'
text类型
使用text类型存储json字符串,速度较慢
4.5s
json类型
把more改为json类型,由于mysql内部的优化,速度有了较大提升
1.6s(没有虚拟字段,大概1.2s)
独立字段
如果有一个普通的字段,没有索引,少了json那些操作速度比较快
SELECT * FROM cmf_third_party_user WHERE openid = '13051450977'
1.6s(在没有虚拟字段时候 我记得是0.9s)
虚拟字段
虚拟字段也不是真实存在的数据,查询结果和json类型差不多
ALTER TABLE cmf_third_party_user ADD COLUMN phone varchar(20) GENERATED ALWAYS AS (more ->> '$.phone')
1.6s
虚拟字段+索引
这个虚拟字段可能需要额外的操作,实际上整体查询速度有所下降,但是可以加索引,结果和普通字段加索引一样,速度很快
0.0s
最后更新于 2024-05-27 06:22:42 并被添加「」标签,已有 730 位童鞋阅读过。
此处评论已关闭