1. Проиндексировать поля, по которым будет условия в select
CREATE INDEX `curve_indx` ON `CustomFrame` ( `curve_id` ASC );
CREATE INDEX `frame_indx` ON `CustomFrame` ( `frame` ASC );
frame_data для расширяемости можно в BLOB, если понадобится хранить там более одного значения
2. SQLite, достаточно подложить Qt-шные драйвера рядом со своим бинарником.
Для максимально быстрого
чтения, можно создать пул соединений к БД, кажое соединение будет выбирать свой кусок данных и складывать в общий вектор.
Запрос будет что то типа такого:
SELECT * FROM 'CustomFrame' LIMIT %N OFFSET %M;
соответственно %N и %M для каждого подключения будут свои.