Estoy usando SQLite en una aplicación Java a través de Zentus. En este contexto, debo guardar y consultar los valores de Java long
en mi base de datos. Procedentes de otros RDBMS he creado la tabla de la siguiente manera para almacenar valores largos:Tipos de datos SQLite
CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue LONG)
Esta solución produce el comportamiento exceptuado pero después de leer la SQLite documentation on data types entendí que mi tipo LONG
tiene el mismo efecto que el uso de TEXT
=>longValue
es almacenado como texto.
Luego decidí cambiar esto a INTEGER
(cuya longitud es variable y puede almacenar hasta 64 bits enteros, que es la longitud de Java larga) para tener un código más limpio y puede ahorrar algo de espacio en disco y aumentar performances porque mis longValues se insertan y consultan como long
.
Después de comparar las actuaciones y el tamaño de las bases de datos creadas no soy capaz de ver las diferencias entre:
CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue LONG)
y
CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue INTEGER)
Cualquier comentario, experiencias o sentimientos sobre el tema?
Por lo tanto, me pregunto: ¿por qué existen tipos de columnas? –
Las columnas tienen "afinidades"; por ejemplo, una columna de texto a la que se le pasa una cadena numérica debe almacenarla como texto, preservando el formato (lugares decimales, etc.). Mientras que una columna numérica que se pasa una cadena numérica lo convertirá en un número antes de almacenarlo, por lo que "10.00" se devolverá más tarde como solo "10". Como una columna LONG tiene la afinidad numérica predeterminada, cambiar el tipo a INTEGER no cambia nada. –
La respuesta del sitio web SQlite es: "Con el fin de maximizar la compatibilidad entre SQLite y otros motores de base de datos, SQLite admite el concepto de" afinidad de tipos "en las columnas.La afinidad de tipo de una columna es el tipo recomendado para los datos almacenados en esa columna La idea importante aquí es que el tipo es recomendado, no obligatorio. Cualquier columna puede almacenar cualquier tipo de datos. Es solo que algunas columnas, dada la opción, preferirán usar una clase de almacenamiento sobre otra "Pero qué" será preferir "significa? ¿Hay algún impacto en el rendimiento y el tamaño de las bases de datos? –