在 JSON 数据查询的使用

Exisi 2023-04-08 15:24:30
Categories: Tags:
  • 函数索引为应用程序提供了很大的便利,我们可以通过调整查询条件来优化查询性能、缩小结果集、减少数据传输等。函数索引同样在 JSON 数据存取方面同样可以有类似效果。我们可以在 JSON 列创建函数索引来简化键值对的查询。

 

  • JSON 的操作符 ->> 对应的是 JSON_UNQUOTE() 函数,该函数返回的是带有排序规则 utf8mb4_bin 的字符串; 而使用 CAST() 函数返回的是带有排序规则 utf8mb4_0900_ai_ci(系统默认排序规则) 的字符串。所以,在查询时需要进行转义以利用到函数索引。

示例

CREATE TABLE employees (

data JSON,
INDEX json_idx ( ( CAST(data->>"$.name" AS CHAR(30) ) COLLATE utf8mb4_bin) )

);

 

SELECT id, position FROM employees WHERE data->>'$.name' = 'James';

示例

CREATE TABLE employees (

data JSON,

INDEX json_idx ( ( CAST(data->>"$.name" AS CHAR(30 ) ) ) )

);

 

SELECT id, position FROM employees WHERE CAST( data->>'$.name' AS CHAR(30) ) = 'James';

 

 

来自 <https://cloud.tencent.com/developer/article/2005383>