Как выполнить mysql json_contains, чтобы узнать о вхождении значения массива в диапазон другого?

Здравствуйте,

Дан массив данных типа json в MySQL, и есть столбец с массивами для сравнения их через json_contains.

Всё было бы прекрасно и удалось бы обойтись одной командой, если бы не один нюанс:
В первом массиве значение одного из ключей представляет собой целое число. А во второй группе массивов мы имеем дело с диапазоном, оформленным через {min_value: n ; max_value: n }.
По всем остальным ключам всё однозначно. Но что сделать с этим?

Есть конечно альтернативы вроде вынести границы диапазона в отдельные столбцы и сначала проверять соответствие по ним через операторы, а потом делать json_contains уже без этого проблемного ключа в массиве. Но, мне кажется, 2 команды всегда буду выполняться дольше.

Как можно всё-таки сравнить массивы на вхождение одной командой? Или я вообще зря заморачиваюсь, и вынесение диапазона из массива и сопоставление через 2 команды не скажется значимым образом на скорости выполнения запроса?

Если посмотреть на вопрос с другой стороны, а точно ли одной командой лучше? Если будет несколько индексируемых столбцов, и выполняемый по ним поиск отсеит хорошую часть данных столбца, то последующая json-команда может выполниться быстрее.

Однако речь идёт об очень маленькой таблице. Изначально, скажем, в ней 500 строк. С "промежуточным" поиском останется 150-300 строк. Но можно также использовать сразу multi-valued индексы на группу ключей (MySQL 8).

Как бы там ни было, выбирать, какой вариант будет быстрее, можно в том случае, если вообще возможно существование всех вариантов.
  • Вопрос задан
  • 203 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы