Прежде всего: не забывайте, что если вы не разрабатываете какое-либо графическое приложение, например, в PHP-GTK, загрузки страниц PHP не сохраняют состояния.Это означает, что если вы выбрали вариант 1, вам нужно было бы где-то кэшировать данные (например, другую БД).В любом случае, я бы не стал хранить это в памяти.
Кроме того, это зависит от того, какие индексы вы настроили.100 текстовых поисков могут быть очень быстрыми, если базы данных имеют полнотекстовые индексы.
Таким образом, циклический просмотр файлов является опцией.Из-за необходимости открывать 100 различных файлов SQLite могут возникнуть некоторые накладные расходы.Также вы не должны забывать закрывать каждый файл после того, как закончите с ним, чтобы уменьшить использование памяти.Вам необходимо убедиться, что все SQlite DB правильно проиндексированы.
Другая возможность - создать локальную DB со всеми данными для поиска и дополнительными метаданными, относящимися к тому, в каком файле sqlite можно найти исходные данные, ипоследняя отметка времени они были проверены.Затем при каждом запросе вы можете проверять метки времени последнего изменения файлов sqlite и копировать любые новые данные в модифицированных БД SQlite в вашу локальную БД, обновлять метку времени и выполнять поиск в вашей локальной БД.Производительность в этом случае будет зависеть от того, как часто обновляются файлы SQlite и как должны синхронизироваться все данные, но я считаю, что в вашем случае этого будет достаточно.