Значения TEXT в базах данных sqlite - PullRequest
0 голосов
/ 26 сентября 2011

В базах данных sqlite для текстовых значений используется что-то наподобие образца с наименьшим весом. Если я неоднократно использую только несколько различных коротких значений TEXT в столбце, было бы лучше заменить их на целые числа?

1 Ответ

3 голосов
/ 26 сентября 2011

SQLite хранит каждую копию текстового столбца в отдельности:

$ sqlite3 pancakes.sqlt
sqlite> create table pancakes (s text);
sqlite> insert into pancakes (s) values ('where is pancakes house?');
sqlite> insert into pancakes (s) values ('where is pancakes house?');
sqlite> insert into pancakes (s) values ('where is pancakes house?');
sqlite> insert into pancakes (s) values ('where is pancakes house?');
sqlite> insert into pancakes (s) values ('where is pancakes house?');
sqlite> insert into pancakes (s) values ('where is pancakes house?');
sqlite> insert into pancakes (s) values ('where is pancakes house?');
sqlite> insert into pancakes (s) values ('where is pancakes house?');

$ strings pancakes.sqlt
SQLite format 3
Itablepancakespancakes
CREATE TABLE pancakes (s text)
=where is pancakes house?
=where is pancakes house?
=where is pancakes house?
=where is pancakes house?
=where is pancakes house?
=where is pancakes house?
=where is pancakes house?
=where is pancakes house?

Поэтому, если вы хотите избежать дублирования строк, вы должны использовать целые числа, создать отдельную таблицу для сопоставления ваших целых чисел со строками, а затемдобавьте внешний ключ в эту новую таблицу, чтобы обеспечить ссылочную целостность.

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