如上SQL可以实现,假设表2的字段也是num,希望可以帮到你
补充:
如果表1的123对应表2的12345这样也符合的话:
下面SQL可以实现:
select 表1.num,count(表2.num) as 次数 from 表1 left outer join 表2 on charindex(cast(表1.num as varchar), cast(表2.num as varchar))>0 group by 表1.num
pg直接存json效率关于 pgsql 数据库json几个函数用法的效率测试关于pgsql 几个 *** 作符的效率测试比较
1. json::->>和 ->>
测试方法:单次运行100次,运行10个单次取平均时间。
测试结果:->>效率高 5% 左右
功能差异:
json::->>在使用前需要对对象转换为jsonb 然后再执行 ->> *** 作,所以比->>更耗时 。
所以如果我们需要对返回的对象进行jsonb *** 作,用jsonb_* 相关函数时,
建议用jsonb_* 而不用 jsonb_*_text ,后者会把结果的jsonb对象转换为text,相对于会多两次 jsonb <-->text 转换 *** 作。
2. any 和 in
select * from table where column in('1','3','5','7')
select * from table where column any('{1,3,5,7}'::text[])
测试方法:单次运行100次,运行10个单次取平均时间。
测试结果:in 效率高 5% 左右
功能差异:
如果参数是自己传入的,那么建议用in(),如果参数是jsonb对象转换的可使用any。
搜索JSONB中一些预定的属性,可以使用Btree、HASH、GIN索引,一般使用BTREE;
如果索引要支持搜索任意属性,则使用GIN索引,如果只是检查它是否仅具有键值,使用jsonb_path_ops,但是如果不仅检查是否具有键值,还检查键的存在,最好使用jsonb_ops:
https://bitnine.net/blog-postgresql/postgresql-internals-jsonb-type-and-its-indexes/
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)