含json字段表和与不含json字段表查询性能对比
说明:
EP_USER_PICTURE_INFO_2:不含json字段表
20200729json_test:含有json字段表
其中20200729json_test 标准ID、MANAGER_NO、PHONE_NO 为非json字段
data为json字段
2个表中MANAGER_NO、PHONE_NO都创建了各自的索引
测试对比
- 非json字段查询对比
2、带条件查询(不包含json字段)
3、含有json字段查询对比
4、只包含json字段查询
5、添加虚拟列
alter table 20200729json_test add column TASK_NUM_VIRTUAL int GENERATED ALWAYS AS (`data` ->> '$.TASK_NUM');
然后给虚拟列加索引
alter table 20200729json_test add key (TASK_NUM_VIRTUAL);
给非json表加索引
alter table EP_USER_PICTURE_INFO_2 add index idx_TASK_NUM(TASK_NUM);
再次测试查询条件
综上所述:在查询条件只有json 字段的时候,测试结果显示非json表查询速度要比json字段表要快,但是在给json 字段里的key加 索引后,查询速度接近,由于业务场景一般都会带MANAGER_NO字段查询,所以业务场景可以使用json表。