java - que - tipos de datos sqlite android
Tipos de datos SQLite (4)
Estoy usando SQLite en una aplicación Java a través de Zentus . En este contexto, necesito guardar y consultar valores long
Java en mi base de datos. Procedentes de otros RDBMS, creé la tabla de la siguiente manera para almacenar valores largos:
CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue LONG)
Esta solución produce el comportamiento exceptuado, pero después de leer la documentación de SQLite sobre los tipos de datos , entendí que mi tipo LONG
tiene el mismo efecto que el uso de TEXT
=> longValue
se almacena como texto.
Entonces decidí cambiar esto a INTEGER
(cuya longitud es variable y puedo almacenar enteros de hasta 64 bits, que es la longitud de Java) para tener un código más limpio y para ahorrar espacio en el disco y aumentar el rendimiento porque mis valores largos Se insertan y se consultan long
.
Después de comparar los rendimientos y el tamaño de las bases de datos creadas, no puedo ver ninguna diferencia entre:
CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue LONG)
y
CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue INTEGER)
¿Algún comentario, experiencias o sentimientos sobre el tema?
Después de observar el rendimiento y el tamaño de las bases de datos creadas, no puedo ver ninguna diferencia entre:
No hay ninguna diferencia. INTEGER tiene afinidad de enteros y LONG tiene afinidad numérica. Y, http://www.sqlite.org/datatype3.html dice:
Una columna que utiliza afinidad INTEGER se comporta igual que una columna con afinidad NUMÉRICA. La diferencia entre la afinidad INTEGER y NUMÉRICA solo es evidente en una expresión CAST.
En SQLite, los tipos de datos son por valor, no por columna. Por lo tanto, cuando inserta números enteros, se almacenan como números enteros independientemente del tipo de columna.
SQLite elige automáticamente el tamaño correcto. De http://www.sqlite.org/datatype3.html :
ENTERO. El valor es un entero con signo, almacenado en 1, 2, 3, 4, 6 u 8 bytes, dependiendo de la magnitud del valor.
SQLite utiliza tipos dinámicos y es libre de esquemas.
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)
);