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