深圳龍崗網(wǎng)站維護阿里域名購買網(wǎng)站
前言:
創(chuàng)建索引的方式分為兩種,CREATE index 和 ALTER TABLE;
被創(chuàng)建索引的關(guān)鍵字類型又分兩種,數(shù)字(UNSIGNED)和字符串(char(128))
一、給json對象屬性param_value(假如是長度128以下的字符串)創(chuàng)建索引
CREATE index `index_name` on ?`table_name `(( CAST(`json_column_name`->>'$.param_value' ?AS char(128)? ARRAY)));
二、給json數(shù)組創(chuàng)建索引
? ? ? ? 1.給json數(shù)組里的對象屬性param_value(假如是數(shù)字類型)創(chuàng)建索引
CREATE index `index_name` on ?`table_name `(( CAST(`json_column_name`->>'$[*].param_value' ?AS UNSIGNED? ARRAY)));
? ? ? ? 2.也可以給json數(shù)組(加入存的是string)直接創(chuàng)建索引
CREATE index `index_name` on ?`table_name `(( CAST(`json_column_name`->>'$[*]' ?AS char(128)? ARRAY)));
三、查詢索引
查詢,提供了三個查詢函數(shù)
MEMBER OF() 數(shù)組中是否存在某一值(如果是唯一匹配查詢建議用這種否則選下面兩種)
JSON_CONTAINS() 數(shù)組中是否包含某些值,交集(必須都包含,此處注意mysql版本必須是8.024以上否則使用可能會失效)
JSON_OVERLAPS() 數(shù)組中是否包含某些值,并集(只要包含一個就行省的用JSON_CONTAINS一直O(jiān)R)