0

我的数据库是 MySQL,我发现没有 JSON 类型,只有文本。但在我的情况下,我需要存储 JSON 含义的数据并在 JSON 数据的哈希键上使用索引。所以“文本”类型不是正确的方法。顺便说一句,我无法将 JSON 数据分成不同的列,因为我不知道 JSON 中的键是什么。

我真正需要的是一个解决方案,通过 MySQL 中的 JSON 键使用 index 或 sth 搜索 JSON 数据,因此搜索速度可以快速且可以接受。

4

3 回答 3

1

如果您无法将数据标准化为 RDBMS 可读格式,则不应使用 MySQL。

noSQL 数据库可能是更好的方法。MySQL 的优势在于处理关系数据。

您正在尝试通过圆孔安装方形物体:)

于 2012-12-21T09:16:56.527 回答
0

我认为您的情况需要Levenshtein Distance 算法。您基本上需要使用文本片段(针)对未知数量(大海捞针)进行文本搜索。而且你需要它快速,因为索引是不可能的。

MySQL 有一个鲜为人知(或无论如何很少使用)的功能,您可以通过它创建User-Defined Functions。该函数本身是一个存储过程,为了提高速度,它可以用 C++ 编译。UDF 在您的查询中本机使用,就好像它们是常规 MySQL 语法的一部分一样。

以下是在 MySQL中实现Levenshtein 用户定义函数的详细信息。

一个示例查询可能是...

SELECT json FROM my_table WHERE levenshtein('needle') < 5;

指的5是“编辑距离”,实际上允许定位近匹配。

于 2012-12-21T09:16:24.353 回答
0

select concat('{"objects\":[' ,(select group_concat( concat('{"id":"',id, '","field":"',field,'"}') separator ',') from placeholder) ,']}');

任何更通用的东西都需要动态 sql

于 2012-12-08T01:42:00.400 回答