有谁用过MySQL的Json索引吗

Schema::create('user_profiles', function (Blueprint $table) {
            $table->id();
            $table->integer('user_id')->index();
            $table->string('gender')->index();
            $table->string('year')->index();
            $table->string('educational')->string();
            $table->string('work')->nullable();
            $table->string('income')->nullable();
            $table->string('height')->index();
            $table->json('area'); // ['11', '1101', '']
            $table->timestamps();
        });

类似这样的area字段,保存的是一个json数组
我要怎么给里面的第一个列创建一个索引
我直接$table->json(‘area’)->index()会报错
另外,我要怎么进行Mode查询

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 8
Jyunwaa
ALTER TABLE user_profiles ADD COLUMN v_column GENERATED ALWAYS AS (area->"$[0]") VIRTUAL;

CREATE INDEX idx_v_column ON user_profiles (v_column);

先给area数组第一列创建虚拟列,然后在虚拟列上创建索引,这是一个很麻烦的行为,管理维护也很麻烦,MySQL对文档的支持是一坨屎。

顺便说一句,MySQL的查询优化器也是一坨屎。

1个月前 评论
cevin 1个月前

mysql json用来查询不方便。尤其是你的json是数组时[1,2,3]这种。还不支持模糊,必须手动的拼接sql

1个月前 评论

你这种情况想加索引,可以上mongodb

1个月前 评论
orange1994

为什么不把json字段中要加索引的冗余出来呢

1个月前 评论

索引原来可以加到json的字段上吗 我还没注意过

1个月前 评论

看了各位的评论,总的来说可以,但是很麻烦,不如不用,哈哈

1个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!