Выбор значений столбцов для минимизации размера файла базы данных SQLite? - PullRequest
0 голосов
/ 29 декабря 2018

У меня есть база данных SQLite, в которой я изменил таблицу, добавив столбец, который будет содержать своего рода постоянно уникальный идентификатор для каждой строки (в дополнение к существующему INTEGER PRIMARY KEY, который может быть переназначен и, следовательно, не является постоянным).Я также хочу избежать случайного смешения обычных идентификаторов и новых «постоянных идентификаторов», поэтому я решил использовать столбец TEXT и дать каждому значению префикс, например pid-.

.просто добавил столбец с именем perma_id с типом TEXT и запустил UPDATE mytable SET perma_id = 'pid-' || _rowid_, чтобы присвоить значения существующим строкам.Затем я сохранил и сжал / пылесосил базу данных и сжал ее в zip-файл, потому что я включу его в Android APK.

Я заметил, что размер файла увеличился с 379 КБ до 417 КБ после добавления нового столбца,Это, конечно, ожидается.Но в качестве эксперимента я подумал, что, возможно, я мог бы уменьшить размер файла, просто используя p... вместо pid-... для значений столбца perma_id, поэтому я переназначил все значения.Но, к моему удивлению, размер файла вместо увеличился до 420kB!Я немного поэкспериментировал, и я могу получить (сжатый) размер файла 417 КБ с pid-... и 420 КБ с p....Как и ожидалось, использование столбца INTEGER еще больше уменьшает размер файла, но только до 414 КБ.

Это заставляет меня задуматься - что такое черная магия за меньшим размером файла при использовании более длинной строки в качестве префикса в столбце perma_id?И есть ли способ определить, какая строка выдаст файл наименьшего размера?

Редактировать

Только что попытался использовать префикс perma-id-..., что приводит к сжатому размеру файла 414 КБ - т.е. так же, какиспользуя столбец INTEGER только с номером после префикса.Поэтому я попытался very-long-permanent-id-with-the-value-... в качестве префикса - 413 КБ.Ум = взорван.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...