У меня есть база данных 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 КБ.Ум = взорван.