tidb可以使用Json_table吗?

【 TiDB 使用环境】生产环境
【 TiDB 版本】6.5.1
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

https://docs.pingcap.com/zh/tidb/stable/json-functions

看一下这个链接!

tidb是支持json函数的,你的这种可以执行在客户端执行下,也可以参考楼上的链接

这个函数应该还不支持 :joy_cat:

数据不多可以用应用程序处理下,然后用cte 构建出来这个表

1 个赞

1.v7.5.0尝试验证,语法尚未兼容,会报错。

mysql> select version();
+--------------------+
| version()          |
+--------------------+
| 8.0.11-TiDB-v7.5.0 |
+--------------------+
1 row in set (0.00 sec)

mysql>  SELECT * FROM JSON_TABLE ('[ {"c1": 1} ]', '$[*]' COLUMNS( c1 INT PATH '$.c1' ERROR ON ERROR )) as jt;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your TiDB version for the right syntax to use line 1 column 27 near "('[ {"c1": 1} ]', '$[*]' COLUMNS( c1 INT PATH '$.c1' ERROR ON ERROR )) as jt"

2.MySQL官方文档
https://dev.mysql.com/doc/refman/8.0/en/json-table-functions.html

Extracts data from a JSON document and returns it as a relational table having the specified columns.
One of the new JSON functions in MySQL 8.0 is JSON_TABLE.
It is also MySQL’s first table function.
That is, the return value is not a scalar value, but a result set.
JSON_TABLE will convert (part of) a JSON document into a relational table.

3.结论:
JSON_TABLE 是MySQL 8.0 的函数,TiDB v6.5 应该是还没有兼容支持,应该在后续新版本里应该会兼容。

楼主你可以在你的版本里验证,也是会有类似的结论。
如果业务有强依赖,就先通过其他的方式绕过JSON_TABLE 函数吧。

1 个赞

在一个分布式数据库关联十几个表,性能会很糟糕的

估计支持的不怎么样

这得看用户的容忍度。只要用户能接受,关联二十张表也不是不行 :smirk:

数据在各个tikv节点重分布,或者全部取到tidb server再关联,成本都是非常高的

已经在规划中了,后续会实现,可以跟踪这个issue

https://github.com/pingcap/tidb/issues/14486

1 个赞

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。