簡體   English   中英

我需要在mysql中使用json數據列的索引

[英]I need to use index the column of json data in mysql

我的數據庫是MySQL,我發現沒有JSON類型,只有文本。 但是在我的情況下,我需要存儲JSON含義的數據,並在JSON數據的哈希鍵上使用索引。 因此,“文本”類型不是正確的方法。 順便說一句,我無法將JSON數據分為不同的列,因為我不知道JSON中的鍵。

我真正需要的是一種通過使用index或sth在MySQL中通過JSON關鍵字搜索JSON數據的解決方案,因此搜索速度可以是快速且可以接受的。

如果無法將數據規范化為RDBMS可讀格式,則不應使用MySQL。

NoSQL數據庫可能是更好的方法。 MySQL的優勢是可以處理關系數據。

您正在嘗試通過圓孔裝配方形物體:)

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

任何更通用的內容都需要動態sql

我認為您的情況需要使用Levenshtein距離算法 基本上,您需要使用文本片段(針頭)對未知數量(干草堆)進行文本搜索。 而且您需要它是快速的,因為索引是不可能的。

MySQL有一個鮮為人知的(或很少使用的)功能,您可以通過它來創建用戶定義的函數 該函數本身是一個存儲過程,為了提高速度,可以使用C ++進行編譯。 UDF在查詢中本機使用,就像它們是常規MySQL語法的一部分一樣。

以下是在MySQL中實現Levenshtein用戶定義函數的詳細信息。

查詢示例可能是...

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

5代表“編輯距離”,實際上允許定位近距離比賽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM