JSON_VALUE函数索引
JSON_VALUE函数语法:
JSON_VALUE(json_data, path_expr [returning_clause] [on_error_clause] [on_empty_clause])
功能:ZENITH支持在JSON数据列上创建JSON_VALUE函数索引,以提升JSON数据的检索效率。
- json_data:合法的JSON非标量数据(数组或对象);如果为空串''或空值NULL,则该函数返回空值NULL。
- path_expr:路径表达式;如果路径表达式非法,则该函数报错
- returning_clause:默认数据类型VARCHAR2(3900)。
- on_error_clause:默认值为NULL ON ERROR。
- on_empty_clause:若未指定该子句时,路径未匹配到时,按照on_error_clause方式处理。
说明:检索语句和创建该函数索引的语句,二者的JSON_VALUE子句应完全一致或在子句默认值上一致,否则,执行计划中将不能利用函数索引。
示例:
-- 在JSON列info上创建JSON_VALUE函数索引 CREATE INDEX idx_t_school_info_name ON t_school(JSON_VALUE(info, '$.name'));
-- 使用函数索引检索 EXPLAIN SELECT * FROM T_SCHOOL WHERE JSON_VALUE(info, '$.name') = 'First Primary School'; ------------------------------------------------------------------------- | Id | Description | Owner | Name | ------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 1 | TABLE ACCESS BY INDEX ROWID | SYS | T_SCHOOL | | 2 | INDEX RANGE SCAN | SYS | IDX_T_SCHOOL_INFO_NAME | -------------------------------------------------------------------------
-- 检索语句JSON_VALUE子句和函数索引JSON_VALUE子句格式不一致,将不能利用函数索引 EXPLAIN SELECT * FROM T_SCHOOL WHERE JSON_VALUE(info, '$.name' RETURNING CLOB) = 'First Primary School'; ------------------------------------------------- | Id | Description | Owner | Name | ------------------------------------------------- | 0 | SELECT STATEMENT | | | | 1 | TABLE ACCESS FULL | SYS | T_SCHOOL | -------------------------------------------------
-- 检索语句JSON_VALUE子句和函数索引JSON_VALUE子句(默认值)格式一致,可以利用函数索引 EXPLAIN SELECT * FROM T_SCHOOL WHERE JSON_VALUE(info, '$.name' RETURNING VARCHAR2(3900) NULL ON ERROR) = 'First Primary School'; ------------------------------------------------------------------------- | Id | Description | Owner | Name | ------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 1 | TABLE ACCESS BY INDEX ROWID | SYS | T_SCHOOL | | 2 | INDEX RANGE SCAN | SYS | IDX_T_SCHOOL_INFO_NAME | -------------------------------------------------------------------------
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」关注作者【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。评论