Probably the best way available in Panorama is using the arrayfilter( function. It would be better if there was a superarraylookup( function, but there is no such beast.
If you can get the data in B into a database, then you could do a search, or a superlookup(. Either of those methods would probably be faster than using an array. Also, it sounds like the values in question are really numbers, and they could be stored as numbers in a database, which would be much faster yet.
Using a data array is not going to help you at all.
As general advice, arrays are intended to be lightweight structures, relatively small. If you are using the adjective “very large” then you should possibly think about using a database, since databases are designed with “very large” in mind.