У меня есть два приложения (серверная и клиентская версия). Версия сервера поместила 500 000 записей с именами файлов в файл базы данных sqlite. Этот файл БД доступен через сеть. Версия клиента имеет текстовое поле, в котором имя файла будет записано сканером штрих-кода. После ввода имени файла приложение подключится к файлу базы данных на подключенном к сети диске и задаст один запрос:
select * from files where filename='testfile.pdf'
Файл базы данных составляет около 73 МБ. Когда я выполняю этот запрос на локальном компьютере, где работает сервер и клиент, он выполняется напрямую, без задержки.
Когда я выполняю этот запрос в локальной сети (не с терминальным сервером), также нет задержки или половины в секунду.
Когда я запускаю это на сервере терминалов (на сервере и на клиентской версии), без задержки.
Тем не менее, когда я запускаю запрос на двух разных экземплярах сервера терминалов (сервер версия в одной и версия клиента в другой) в том же центре обработки данных с 1-гигабитным соединением, до выполнения запроса требуется до 10 секунд.
У меня есть идея, что клиент загружает весь файл базы данных SQLite прежде чем он сможет воспроизвести запрос на нем. Есть ли способ продолжать использовать SQLite при ускорении этой настройки?
Мои идеи - загрузка всей БД в массив при загрузке клиентской версии ... Хотя я надеюсь, что есть другой способ доступа к База данных SQLite.