У меня есть две части к этому вопросу, одна будет бонусом для меня, если вы сможете ответить.
Вопрос № 1 У меня есть две таблицы SQLITE с именами tbl и tbl_search, где tbl являетсяобычная таблица и tbl_search - это таблица FTS4
Допустим, мы находимся при запуске # 0 моего приложения, приложение запускается и начинает заполнять таблицу tbl данными, а затем в конце копирует все из таблицы tbl в таблицу tbl_searchи работа сделана, но это связано с затратами на производительность для дополнительных прогонов.Для инкрементных прогонов (прогон № 1) до сих пор я удалял и заново создавал таблицу fts, потому что во время обычного копирования она также использовала для выгрузки элементов прогона № 0, создавая дубликаты данных, плюс это стоиломного на части производительности.
После размышления я нашел 4 метода для решения этой ситуации:
1) Создание триггера SQL для копирования tbl в tbl_search.
2) Создайте временную таблицу при каждом запуске и скопируйте ее данные в tbl_search, чтобы избежать дублирования, а затем удалите ее
3) Используйте уникальные идентификаторы в столбце идентификатора tbl, найдите недостающие и скопируйте только те в tbl_search
4) создайте еще одну таблицу, в которой будут указаны данные о последнем запуске, и используйте их, чтобы поместить все после столбца --AFTER Date.Предположим, что последний запуск завершился 04-05-2018 21:40, а затем повторить все после этого времени от tbl до tbl_search.
Я нашел вариант № 3 наиболее плодотворным с точки зрения производительности и хотел быпойти на это, так как я могу это сделать?Ниже приведен пример таблицы для справки.
RUN # 0
ID FILENAME LABEL_NUMBER
----------------------------------------------------------------------
1 C:/Test_Software/6.avi 11
2 C:/Test_Software/6.avi 10
3 C:/Test_Software/6.avi 8
4 C:/Test_Software/6.avi 6
5 C:/26.avi 10
6 C:/26.avi 8
RUN # 1 (в инкрементах)
ID FILENAME LABEL_NUMBER
----------------------------------------------------------------------
7 C:/Test_Software/36.avi 51
8 C:/Test_Software/556.avi 30
Я хотел бы выполнить запрос, подобный следующему:
Select ID from tbl, If (ID not present in tbl_search) INSERT into tbl_search
Бонусный вопрос: Из всех методов, которыми я поделился, какой самый быстрый и лучший метод, который я должен выбрать?Пожалуйста, поделитесь ПОЧЕМУ и How-To, я буду благодарен.