Android---optimización de SQLite

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.

  \bala 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.

  \bala 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

  \bala 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)

  \bala Í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);

  \bala Í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

  \balaÍ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

  \bala 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.

  \bala 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

  \bala 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

  \bala 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

  \bala Comparar valores para evitar NULL

  \bala 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.

  \bala Las columnas de consulta están en el mismo orden que las columnas de índice

  \bala Reemplace la cláusula EXISTS con una combinación de varias tablas

transacción de uso

Supongo que te gusta

Origin blog.csdn.net/qq_44950283/article/details/131191587
Recomendado
Clasificación