Compared to C/C++ executables, LabVIEW executables take up a lot of memory.

However, 100MBytes for the application you mention seems like a bit much. The actual data should be stored in about the same amount of space in memory as it is on disk. However, if you don't really pay attention, you can make many copies of that data and end up using far more memory than you need to. How you use it and store it is important. Read through
Managing Large Data Sets in LabVIEW for pointers on how to minimize those copies and speed performance. You may also want to check out
How Can I Optimize the Memory Use in My LabVIEW VI?I would recommend storing each of your data columns in a separate single-element queue. You can search for anything by dequeueing the array, doing the search on the array, then enqueueing the array again. This will not produce any copies and will then give you an index to fetch the other data from the other columns. To fetch data from a column, dequeue it, index the array, and enqueue the array again. You will make a single copy of the element you fetched. Since all your single element queues will be of type "queue of array of strings", you can create a couple of subVIs to handle the search and fetch functions. This also allows you to encapsulate the search and fetch functionality so you can improve it in the future, if necessary (e.g. currently use the LabVIEW search 1D array function but in the future use a hash table or binary search).
Let us know if you need more help.