Multi-Valued Indexes are going to change the way you think about
using JSON data and the way you architect your data. Before MySQL
8.0.17 you could store data in JSON arrays but trying to search
on that data in those embedded arrays was tricky and usually
required a full table scan. But now it is easy and very
quick to search and to access the data in JSON arrays.
Multi-Valued IndexesA Multi-Valued Index (MVI) is a secondary
index defined on a column made up of an array of values. We
are all used to traditional indexes where you have one value per
index entry, a 1:1 ratio. A MVI can have multiple records
for each index record. So you can have multiple postal
codes, phone numbers, or other attributes from one JSON document
indexed for quick access. See Multi-Valued Indexes for details.
…
Showing entries 1 to 2
Aug
14
2019
Jul
22
2019
MySQL 8.0.17 adds three new functions to the JSON
repertoire. All three can take advantage of the new
Multi-Value Index feature or can be used on JSON arrays.
JSON_CONTAINS(target, candiate[,
path])
This function indicates with a 1 or 0 if a candidate
document is contained in the target document. The optional
path argument lets you seek information in embedded
documents. And please note the 'haystack' is before the
'needle' for this function.
mysql> SELECT JSON_CONTAINS('{"Moe": 1, "Larry":
2}','{"Moe": 1}');
+------------------------------------------------------+
| JSON_CONTAINS('{"Moe": 1, "Larry": 2}','{"Moe": 1}') |
+------------------------------------------------------+
…
Showing entries 1 to 2