示例
示例
ALTER TABLE products
ADD INDEX idx_tags ((CAST(tags -> '$.tags' AS CHAR(20) ARRAY)));
-- 可命中多值索引的写法
SELECT * FROM products
WHERE JSON_CONTAINS(tags -> '$.tags', '"book"');
SELECT * FROM products
WHERE 'book' MEMBER OF (tags -> '$.tags');
-- 检查是否命中
EXPLAIN SELECT * FROM products WHERE 'book' MEMBER OF (tags -> '$.tags');| 元素类型 | CAST 的目标类型要覆盖元素值域(CHAR/UNSIGNED/SIGNED/DATE 等 ARRAY) |
|---|---|
| 匹配条件 | MEMBER OF、JSON_CONTAINS、JSON_OVERLAPS 等可与多值索引配合 |
| 版本 | MySQL 8.0.17 起支持 |