Вставлять большой массив данных в SQL лучше с помощью bulk insert, но, на сколько я помню, эта операция не понимает json (нужно уточнить). Можно из json конвертнуть в csv (или во что-либо другое, с чем bulk insert работает), а потом уже вставлять в sql. JSON преобразовать в csv можно достаточно простым скриптом на javascript.
Чтоб быстро работал поиск, нужно сделать соответствующие индексы.
Предложенный альтернативный вариант можно считать рабочим, только если нет сильно удаленных клиентов с не слишком быстрыми каналами связи (и вообще их не очень много), кроме того, чтоб не таскать на каждый запрос этот огромный BLOB можно вытянуть его один раз при старте клиента, а потом уже искать только локально.
Но, как по мне, вариант с загрузкой в SQL вполне рабочий.