我的數據庫是MySQL,我發現沒有JSON類型,但只有文本。但在我的情況下,我需要在JSON數據的哈希鍵上存儲JSON數據的含義和使用索引。所以'文本'類型是不正確的。順便說一下,我無法將JSON數據分成不同的列,因爲我不知道JSON中的密鑰是什麼。我需要使用索引mysql中的json數據的列
我真正需要的是通過使用索引或某事在MySQL的JSON鍵搜索JSON數據的解決方案,因此搜索速度可能會快的和可接受的。
我的數據庫是MySQL,我發現沒有JSON類型,但只有文本。但在我的情況下,我需要在JSON數據的哈希鍵上存儲JSON數據的含義和使用索引。所以'文本'類型是不正確的。順便說一下,我無法將JSON數據分成不同的列,因爲我不知道JSON中的密鑰是什麼。我需要使用索引mysql中的json數據的列
我真正需要的是通過使用索引或某事在MySQL的JSON鍵搜索JSON數據的解決方案,因此搜索速度可能會快的和可接受的。
select concat('{"objects\":[' ,(select group_concat( concat('{"id":"',id, '","field":"',field,'"}') separator ',') from placeholder) ,']}');
再說了通用將需要動態SQL
我真正需要的是通過使用索引或某物的JSON鍵搜索JSON數據的解決方案,因此搜索速度可能會快accaptable但仍然真的要求我們的善良。 – Wooden
我覺得你的局勢要求Levenshtein Distance algorithm。您基本上需要用文本片段(針頭)對未知量(乾草堆)進行文本搜索。而且你需要它很快,因爲索引是不可能的。
有MySQL的,由此可以創建User-Defined Functions一個鮮爲人知的(或很少使用在任何速率)的能力。該函數本身是一個存儲過程,爲了加快速度,它可以用C++編譯。 UDF的使用在你的查詢中本地使用,就好像它們是常規MySQL語法的一部分一樣。
這裏是實現MySQL中的Levenshtein User-Defined Function細節。
示例查詢可能是......
SELECT json FROM my_table WHERE levenshtein('needle') < 5;
的5
指的是「編輯距離」,實際上允許近場比賽被找到。
如果您不能正常化您的數據到RDBMS可讀的格式,你不應該使用MySQL。
一個NoSQL數據庫可能是更好的辦法。 MySQL的強項是使用關係數據。
你正試圖通過一個圓孔適合一個正方形的對象:)
請不要在你的文章上簽名。這就是你的名字和聲譽的徽章是什麼。除非您的斜體陳述實際上是問題的一部分,否則我們無法幫助您。 –
你能發佈一個格式化的例子JSON嗎? –
或者你可以使用PostgreSQL 9.4(目前RC1),它們支持GIN的JSONB數據:3 – Kokizzu