Типы данных SQLite - PullRequest
       1

Типы данных SQLite

18 голосов
/ 02 августа 2010

Я использую SQLite в приложении Java через Zentus . В этом контексте мне нужно сохранить и запросить значения Java long в моей базе данных. Исходя из других СУБД, я создал следующую таблицу для хранения длинных значений:

CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue LONG)

Это решение обеспечивает исключительное поведение, но после прочтения документации SQLite по типам данных Я понял, что мой тип LONG имеет тот же эффект, что и использование TEXT => longValue, сохраняемое как текст .

Затем я решил изменить это значение на INTEGER (длина которого является переменной и может хранить до 64-битных целых чисел, что соответствует длине Java), чтобы иметь более чистый код и, возможно, сэкономить место на диске и увеличить производительность, потому что мои длинные значения вставляются и запрашиваются как long.

После сравнения производительности и размера созданных баз данных я не вижу никакой разницы между:

CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue LONG)

и

CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue INTEGER)

Любые комментарии, опыт или чувства по этому вопросу?

Ответы [ 4 ]

22 голосов
/ 02 августа 2010

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

8 голосов
/ 02 августа 2010

SQLite автоматически выбирает правильный размер. От http://www.sqlite.org/datatype3.html:

INTEGER. Значение представляет собой целое число со знаком, хранящееся в 1, 2, 3, 4, 6 или 8 байтах. в зависимости от величины значения.

SQLite использует динамические типы и не содержит схем.

7 голосов
/ 03 августа 2010

После просмотра производительности и размера созданных баз данных я не вижу никакой разницы между:

Там не никакой разницы.INTEGER имеет целочисленное сходство, а LONG - числовое сходство.И, http://www.sqlite.org/datatype3.html говорит:

Столбец, который использует сходство INTEGER, ведет себя так же, как столбец с сходством NUMERIC.Различие между сходством INTEGER и NUMERIC проявляется только в выражении CAST.

2 голосов
/ 14 февраля 2012
CREATE TABLE ex2(
  a VARCHAR(10),
  b NVARCHAR(15),
  c TEXT,
  d INTEGER,
  e FLOAT,
  f BOOLEAN,
  g CLOB,
  h BLOB,
  i TIMESTAMP,
  j NUMERIC(10,5)
  k VARYING CHARACTER (24),
  l NATIONAL VARYING CHARACTER(16)
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...