-- SELECT JSON_CONTAINS(json_column, 'search_value'); -- CREATE INDEX idx_json_cate_id ON test ((CAST(JSON_EXTRACT(json1, '$[*]') AS UNSIGNED ARRAY))); EXPLAIN SELECT * FROM test -- FORCE INDEX (idx_json_cate_id) WHERE -- JSON_EXTRACT( json1, '$.queryTypes' ) = '2'; -- json1 ->>'$.queryTypes' = '2' JSON_CONTAINS( json1->'$.queryTypes', '2' ) -- -- INSERT INTO `kuke_marketing`.`test`( `json1`, `str`) VALUES ( '{\"num\": 6, \"list\": [{\"id\": \"981085833604173824\", \"cateId\": \"1\", \"newsId\": \"981085833604173824\"}, {\"id\": \"980370004582146048\", \"cateId\": \"1\", \"newsId\": \"980370004582146048\"}, {\"id\": \"980369405350322176\", \"cateId\": \"1\", \"newsId\": \"980369405350322176\"}, {\"id\": \"979159652302610432\", \"cateId\": \"1\", \"newsId\": \"979159652302610432\"}, {\"id\": \"979158860338323456\", \"cateId\": \"1\", \"newsId\": \"979158860338323456\"}, {\"id\": \"977819451187761152\", \"cateId\": \"1\", \"newsId\": \"977819451187761152\"}], \"title\": \"\", \"goodsList\": [], \"showTitle\": 1, \"titleIcon\": \"\", \"queryTypes\": \"1\", \"selectType\": 4, \"recommendType\": 3, \"advertisementList\": [{\"id\": \"1\", \"img\": \"\", \"url\": \"\", \"status\": 1, \"sorting\": 4, \"dicSkipId\": 17, \"dicFunctionId\": 15, \"giftPackageId\": \"\"}], \"goodsPresentPrice\": \"100\"}', '1'); ALTER TABLE test ADD INDEX cates( (CAST(json1->'$.queryTypes' AS UNSIGNED ARRAY)) )