Способ создания замороженного табличного представления в SQLite? - PullRequest
0 голосов
/ 10 апреля 2011

У меня есть таблица SQLite с потенциально сотнями тысяч записей, которая добавляется (и иногда удаляется из) в фоновом режиме с нерегулярными интервалами. Пользовательский интерфейс должен отображать эту таблицу в произвольном порядке, выбранном пользователем, в элементе wxWidgets wxListCtrl.

Я планирую использовать элемент управления списком wxLC_VIRTUAL и запрашивать таблицу для небольших групп элементов по мере необходимости, используя LIMIT и OFFSET, но я предвижу проблему. Когда фоновый процесс вносит изменения в элементы, которые «выше» просматриваемых в настоящее время, я не вижу способа узнать, как изменится просматриваемые в настоящее время элементы.

Есть ли какой-нибудь трюк с SQLite, чтобы справиться с этим? Может быть, способ определить, в каком смещении находится конкретная запись в определенном отсортированном порядке, без перебора всех записей, возвращаемых оператором SELECT?

В качестве альтернативы, есть ли какой-нибудь способ создать неизменное представление базы данных в определенное время без дублирования ее времени?

Если ничего не помогает, я могу сохранить измененные элементы и добавить их позже, но я надеюсь, что мне не придется.

1 Ответ

1 голос
/ 11 апреля 2011

Решил это, создав запрос для поиска индекса элемента, посчитав количество элементов, которые «меньше» (в пользовательском порядке) того, который я ищу.Сложно написать из-за пользовательского порядка, но он работает и работает на удивление быстро даже на огромной таблице.

...