powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Как быстрее обновить диапазон строк (месяц) в годовой SQLite базе?
3 сообщений из 3, страница 1 из 1
Как быстрее обновить диапазон строк (месяц) в годовой SQLite базе?
    #37264298
economistalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
База за 3 года, 1 табл из 4 млн строк х 50 полей, перв. ключа (PK) нет, индексы все есть.

Данные импортируются помесячно (по ~100 тыс. строк), больше не позволяет оболочка 1С, в обычном порядке месяцев 1-2-3...11-12 Но так как это бухгалтерия ~:-( - то часто "задним" числом меняются проводки, поэтому после ноября (11) может обновиться март (3). Держать месяцы в разных таблицах плохо - скорость запросов падает в 3 раза. Посоветуйте как быстрее импортировать "новые" месяцы в БД и чтобы запросы (с... по...) работали быстро. Время импорта и реиндекса примерно одинаково (2 мин на 100 тыс. строк). REPLACE неприменим из-за отсутствия PK. Есть идеи:

1) Обнаружив скриптом новый "март" - сносить все строки с этого месяца
Код: plaintext
DELETE ... WHERE DATOPER>"2011-03-01", 
а потом импортировать и восстаналивать индексы. ДОЛГО ~10 мин.

2) Удалять один старый "март"
Код: plaintext
DELETE ... WHERE DATOPER>"2011-03-01" AND DATOPER<"2011-03-01"
импортировать "новый" (окажется в конце таблицы, то есть не по хронологии), а затем обновлять индексы. Этот способ быстрее ~6 мин., но запросы начинают выполняться медленнее на +10...100%, причина неизвестна. Но есть предположение - данные в файле БД "фрагментированы".
Что посоветуете новичку!?
...
Рейтинг: 0 / 0
Как быстрее обновить диапазон строк (месяц) в годовой SQLite базе?
    #37270719
MaxSem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
economistalexперв. ключа (PK) нет

[skipped]
REPLACE неприменим из-за отсутствия PK.

Ну дак попробуй создать его. Поскольку напрямую это невозможно, придётся создать другую таблицу, перекинуть в неё данные из старой, снести старую и переименовать на её место новую.
...
Рейтинг: 0 / 0
Как быстрее обновить диапазон строк (месяц) в годовой SQLite базе?
    #37270754
economistalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОК, ушел тестировать. Копирование таблиц очень долгая процедура, поэтому также попробую вытащить какойнить UID из 1С, он там 100%-но есть.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Как быстрее обновить диапазон строк (месяц) в годовой SQLite базе?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]