Прошу помощи (mysql 5.7) В связи с большим количеством данных в таблице было принято решение хранить связи ячеек не в отдельной таблице как обычно принято, а указывать их непосредственно напротив каждого поля в JSON
Есть таблица t1 в которой в поле vIDs хранятся ключи (50 штук) таблицы t2:
CREATE TABLE `t1` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
.....
`vIDs` json DEFAULT NULL,
)
Таблица t2
CREATE TABLE `t2` (
`vID` int(11) NOT NULL AUTO_INCREMENT,
.....
)
Необходимо сделать запрос к таблице t1 и вывести все связанные ключи из таблицы t2 которые хранятся в JSON t1.vIDs
EXPLAIN SELECT t1.* FROM t1 LEFT OUTER JOIN t2 ON JSON_CONTAINS(t1.vIDs->"$.*",JSON_ARRAY(t2.vID)) WHERE t1.ID=1
Данный запрос работает, но почему то идет проход по всем ключам из t2. И это не годится с текущим объемом базы. Можно конечно сделать два запроса. В первом запроса Достать JSON из t1, разобрать его на php и Вторым запросом собрать все значения через IN или = и будет работать намного быстрее, но хочется эстетической красоты и уложить это все в 1 запрос.
Может возможно как то значения из t1.vIDs (JSON ключи) записать во временную таблицу и уже по ней делать JOIN?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей