mysql json字段
json字段取消双引号
1 | extra_fields->>'$.buyer_nationality' |
带双引号
1 | extra_fields->'$.buyer_nationality' |
建立虚拟字段 并建立索引
做了100万行json数据,测试结果
sql
1 | SELECT * FROM cmf_third_party_user WHERE more->>"$.phone" = '13051450977' |
text类型
使用text类型存储json字符串,速度较慢
4.5s
json类型
把more改为json类型,由于mysql内部的优化,速度有了较大提升
1.6s(没有虚拟字段,大概1.2s)
独立字段
如果有一个普通的字段,没有索引,少了json那些操作速度比较快
1 | SELECT * FROM cmf_third_party_user WHERE openid = '13051450977' |
1.6s(在没有虚拟字段时候 我记得是0.9s)
虚拟字段
虚拟字段也不是真实存在的数据,查询结果和json类型差不多
1 | ALTER TABLE cmf_third_party_user ADD COLUMN phone varchar(20) GENERATED ALWAYS AS (more ->> '$.phone') |
1.6s
虚拟字段+索引
这个虚拟字段可能需要额外的操作,实际上整体查询速度有所下降,但是可以加索引,结果和普通字段加索引一样,速度很快
0.0s
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Dev!