跨表连接时如何最好地索引/解构 json 对象?
Posted
技术标签:
【中文标题】跨表连接时如何最好地索引/解构 json 对象?【英文标题】:How to best index/deconstruction json objects when joining across tables? 【发布时间】:2021-08-31 21:01:42 【问题描述】:所以我有点进退两难。我有两个表中的数据,看起来有点像这样:
表 1: 字段 A:
["ABC","123","doReMi"]
表 2: 字段 B:
["QWE","ASD","ZXC"]
数据只是一个 JSON 字符串数组,没有键/值对,然后解构并在其上放置索引。
我必须像这样进行一些讨厌的连接:
table1
LEFT JOIN table2
ON JSON_SEARCH(table1.fieldA,one,table2.fieldB) IS NOT NULL
对于解决这个问题的最佳方法,我有点坚持,因为搜索的性能相对糟糕。任何提示/提示将不胜感激!
谢谢
【问题讨论】:
没有内置的 JSON 函数来检查 JSON 数组是否重叠(而不是对象)。将一个数组解析为元素,然后逐个检查值。 【参考方案1】:最好根据数据的使用方式来设计架构。
JSON 列可方便地保存杂项信息的集合您不需要通过 SQL 进行检查。如果需要频繁解析,最好在在将数据放入表之前进行解析。
也就是说,将一个命名属性放入它自己的列中。并为该列提供合适的数据类型。或者,在您的情况下,将数组转换为表格的行。您的 table1
需要另一个 table1A
,在您的示例中,3 行,每个值一个,加上一个 id,以便它可以是 JOINed
到 table1
的任何其他内容。
table1A
可以很容易地在该列上有一个INDEX
。
【讨论】:
以上是关于跨表连接时如何最好地索引/解构 json 对象?的主要内容,如果未能解决你的问题,请参考以下文章