SQLite es una base de datos liviana, un sistema de administración de bases de datos relacionales compatible con ACID, contenido en una biblioteca C relativamente pequeña. Es un proyecto de dominio público establecido por D.RichardHipp. Está diseñado para ser integrado y se ha utilizado en muchos productos integrados. Ocupa muy pocos recursos. En dispositivos integrados, solo unos pocos cientos de K de memoria pueden ser suficientes. Puede ser compatible con los principales sistemas operativos, como Windows/Linux/Unix, y puede combinarse con muchos lenguajes de programación, como Java, C#, PHP, Tcl, etc., y tiene una interfaz ODBC. En comparación con Mysql y PostgreSQL, los dos mundos de código abierto En lo que respecta al famoso sistema de gestión de bases de datos, su velocidad de procesamiento es más rápida que ellos. La primera versión Alpha de SQLite nació en mayo de 2000 y han pasado 16 años desde 2016. SQLite también marcó el comienzo de una nueva versión SQLite3, que se lanzó.
tipo de datos SQLite
Cada valor almacenado en una base de datos SQLite tiene uno de los siguientes tipos de almacenamiento:
tipo de almacenamiento | describir |
NULO | El valor es un valor NULL. |
ENTERO | El valor es un entero con signo almacenado en 1, 2, 3, 4, 6 u 8 bytes dependiendo del tamaño del valor |
REAL | El valor es un valor de punto flotante almacenado como un número de punto flotante IEEE de 8 bytes |
TEXTO | El valor es una cadena de texto, almacenada usando la codificación de la base de datos (UTF-8, UTF-16BE o UTF-16LE) |
GOTA | El valor es una gota de datos que flex almacena de acuerdo con su entrada |
Sintaxis SQL básica
Lenguaje de definición de datos DDL
Orden | describir |
CREAR | Crear una nueva tabla , vista de una tabla u otro objeto en la base de datos |
ALTERAR | Modificar un objeto de base de datos existente en la base de datos, como una tabla |
GOTA | Eliminar una tabla completa , una vista de una tabla u otro objeto en la base de datos |
Lenguaje de manipulación de bases de datos DML
Orden | describir |
INSERTAR | Insertar un registro en la tabla |
ACTUALIZAR | registro de modificación |
BORRAR | Eliminar el registro |
Lenguaje de consulta de datos DQL
Orden | describir |
SELECCIONAR | recuperar ciertos registros de una o más tablas |
Optimización SQLite (Entrevista)
índice
En pocas palabras, un índice es un puntero a los datos de una tabla. Un índice en una base de datos es muy similar a un índice en un libro. Tome la página del catálogo (índice) del diccionario chino como ejemplo, podemos encontrar rápidamente la palabra deseada en el catálogo (índice) ordenada por pinyin, trazos, radicales, etc.
Ventajas: acelera en gran medida la recuperación de la base de datos, incluida la consulta de una sola tabla, la consulta de tabla vinculada, la consulta de grupo y la consulta de clasificación. A menudo, un orden de magnitud o dos en la mejora del rendimiento, creciendo en órdenes de magnitud con los datos.
Desventajas: La creación y el mantenimiento del índice consume, y el índice ocupa espacio físico, que aumenta con el aumento del volumen de datos. Los índices deben mantenerse al agregar, eliminar y modificar la base de datos, lo que afectará el rendimiento de agregar, eliminar y modificar.
índice de clasificación
Crear índice directamente: use la declaración sql para crear, en Android, puede crear directamente la declaración excuSql en onCreate o onUpgrade de SQLiteOpenHelper.
create index id_index on user(id)
Índice único: asegúrese de que todos los datos en la columna de índice sean únicos y se puedan usar para índices agrupados y no agrupados
create unique index id_index on user(id);
Índice único: solo se incluye un único campo en la declaración de creación de índice , como el índice ordinario y los ejemplos de creación de índice único anteriores
Índice compuesto: también conocido como índice compuesto, que incluye varios campos en la declaración de creación del índice al mismo tiempo
create index cx_index on user(id, name);
Escenas a utilizar
Se recomienda utilizar un índice cuando la frecuencia de actualización de datos de un determinado campo es baja, la frecuencia de consulta es alta y a menudo ocurren consultas de rango (>, <, =, >=, <=) u ordenar por, agrupar por. Y cuanto mayor sea la selectividad, más ventajoso es construir un índice.Aquí, la selectividad se refiere al número de valores únicos en un campo/número total.
A menudo se accede a varias columnas al mismo tiempo y cada columna contiene valores repetidos. Considere la posibilidad de crear un índice compuesto.
Reglas de uso del índice
Para los índices compuestos, la columna utilizada con más frecuencia se utiliza como columna inicial (el primer campo del índice). Si la columna inicial no está en la condición de consulta al realizar la consulta, no se utilizará el índice compuesto.
create index complex_index on user(id, name);
select * from user where id > 3; --使用了索引
select * from user where name like 'z*'; --未使用索引
--检验是否使用了索引
sqlite> explain query plan select * from user where id > 3;
QUERY PLAN
--SEARCH TABLE user USING INDEX sqlite_autoindex_user_1 (id>?)
Run Time: real 0.000 user 0.000000 sys 0.000000
sqlite> explain query plan select * from user where name like 'z*'
QUERY PLAN
--SCAN TABLE user
Run Time: real 0.001 user 0.000000 sys 0.000000
Evite calcular la columna de índice. Si algún cálculo en la columna de la cláusula where no se puede compilar y optimizar, hará que el índice falle al realizar la consulta.
select * from user where cast(id as char) = '3';
--检验
explain query plan select * from user where cast(id as char) = '3';
QUERY PLAN
--SCAN TABLE user
Run Time: real 0.001 user 0.000000 sys 0.000000
Comparar valores para evitar NULL
Al consultar varias tablas, preste atención a seleccionar la tabla adecuada como tabla interna. Las condiciones de conexión deben considerar completamente tablas con índices, tablas con una gran cantidad de filas, y la selección de tablas internas y externas puede determinarse mediante la fórmula: la cantidad de filas coincidentes en la tabla externa * la cantidad de veces que cada búsqueda en la mesa interior, y el producto más pequeño es la mejor solución. Antes de que se ejecute la operación real de varias tablas, el optimizador de consultas enumerará varios grupos de posibles esquemas de conexión de acuerdo con las condiciones de conexión y encontrará el mejor esquema con la menor sobrecarga del sistema.
Las columnas de consulta están en el mismo orden que las columnas de índice
Reemplace la cláusula EXISTS con una combinación de varias tablas
transacción de uso