这篇文章主要介绍“MySQL怎么为JSON字段创建索引”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL怎么为免费云主机域名JSON字段创建索引”文章能帮助大家解决问题。从MySQL 8.0.17 开始, InnoDB支持创建多值索引(Multi-Valued Indexes),该索引是在JSON存储值数组的列上定义的二级索引,对于单个数据记录可以有多个索引记录。此类索引特定的语法定义:CAST(expression AS type ARRAY),例如CAST(data->’$.zipcode’ AS UNSIGNED ARRAY)。 跟普通索引一样,也可以在EXPLAIN中查看到。跟其他索引一样,多值索引可以在建表时添加,也可以通过ALTER TABLE或者CREATE INDEX创建。语法注意:这里在CAST语法外面有两层单括号!,如果少写一个会报错!测试案例PS:文中的案例是参考官方文档中的案例,只是作为测试,所以在命名等方面并不怎么规范,实际开发过程中要严格遵守公司团队的开发规范,不要偷懒!查看执行计划发现可以使用到索引:如果需要给字符类型创建多值索引,则必须是utf8mb4字符集且排序规则是utf8mb4_0900_as_cs,否则报错该版本不支持:如果要为binary二进制字符串创建多值索引的话,则排序规则必须是binary,否则报错不支持。修改排序规则后可成功添加索引:语法注意:这里在CAST语法外面有两层单括号!如果少写一个会报错!测试案例查看执行计划发现可以使用到索引:语法语法跟普通组合索引差不多,同样也遵守最左匹配原则:注意:这里在CAST语法外面需要使用小括号括起来!测试案例查看执行计划发现可以使用到索引:一个多值索引只允许包含一个属性的值该索引目前只支持三个语法目前只有MEMBER OF、 JSON_CONTAINS()、 JSON_OVERLAB()三种语法可以使用到多值索引。索引值必须转成数组( CAST( custinfo -> ‘$.key’ AS UNSIGNED array)),语法中的array是可以不加的,之所以要强制加是因为如果不加就不是数组结构,不是数组结构就没法直接使用上述三个语法,需要通过JSON_ARRAY()等方法转换后才能使用,这样就会导致索引失效!因此不管需要加索引的字段是单个值的字段还是数组字段,都要加上array关键字。该索引不支持用于表关联不能结合前缀索引不支持在线创建多值索引这句话的意思是该操作使用 ALGORITHM=COPY,即通过新建一张表结构,再将数据复制过去的方式实现索引的创建。因此该过程中不允许DML操作。多值索引对字符集类型字段有明确的要求binary字符集的排序规则必须是binaryutf8mb4字符集的排序规则必须是utf8mb4_0900_as_cs其他任何字符集或排序规则都不能创建多值索引,创建时会报错当前版本不支持。多值索引的应用场景非常广泛!有了他之后很多关联关系表都可以不用了!举个简单的例子:用户标签,很多场景下会给用户贴上各种标签,比如1高 2富 3帅,为了后续的更高效的做统计或筛选查询,我们不能直接将这个标签作为一个字段存储,因为没有索引查询效率不高,所以很多时候会使用一张关联关系表来存储用户-标签的关系。但是现在有了多值索引,我们就可以将标签作为一个字段存储了!这只是其中一个小场景,类似的场景非常多,用户可以换成任何事物,标签也可以换成其他任何属性,只要是这个事物存在多种属性值就行,存在一个多对多关系,那么在没有需要这个属性与其他表做表关联的请况下),都可以使用多值索引实现!多值索引不支持表关联,因此如果需要用该字段在做表关联的话就不合适了。关于“MySQL怎么为JSON字段创建索引”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注百云主机行业资讯频道,小编每天都会为大家更新不同的知识点。
今天小编给大家分享一下Qt线程池QThreadPool如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。现在所有的高性能服务器程序,几乎都会…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。