лучше всего это отдельной таблицей хранить допполя принцип EAV
orders_attr
enty_id (index)
value_text
value_int
type_id (index)
orders_type
id
name
virtual_name = 'wifi'
type ( int,str)
select o.* from orders o
inner join order_attr a on o.id = a.enty_id
where
( a.type_id = 1 and value_int IN(1,2,3,4) )
and
( a.type_id = 2 and value_int = 1 )
способ 2
создать поле LARGETEXT
для JSON суда запихиваете данные
поиск делаете через sphinx ngnix проиндексирует индексы + json структуру по которой можно сделать доп фильтр.
mysql тоже умеет создавать индексы для json как виртуальный индекс ( это конкретный ключ в json )
сам я бы сделать EAV + sphinx