¿Cuál es la relación entre la clave principal de SQLite y RowID?
De forma predeterminada, SQLite tendrá automáticamente una columna RowID, comenzando desde 1, +1 por cada registro agregado
Cuando la clave principal está configurada y el tipo de clave principal es un número entero , la consulta RowID es igual a la clave principal
Cuando la clave principal se establece en un número entero, la consulta de Rowid y la clave principal
crea la tabla aaa(id entero PRIMARY KEY,aaa ntext)
Solo se reemplazará Rowid cuando esté configurado en Integer. No funcionará si está configurado en int o cualquier otra cosa. La siguiente figura establece la clave principal en tipo int.
crear tabla aaa(id int PRIMARY KEY,aaa ntext)
Comparación de eficiencia de escritura:
Inserte registros de 500 W, no configure la clave principal, use rowid, escriba tiempo 1 minuto y 13 segundos
Inserte registros de 500 W, configure la clave primaria entera, escriba el tiempo en 1 minuto y 19 segundos
Comparación de eficiencia de recuperación:
Para una tabla con una clave primaria entera, la clave primaria fue consultada 1 millón de veces, lo que tomó 1 minuto y 20 segundos
Para la configuración Para una tabla con una clave primaria entera, consultar el ID de fila 1 millón de veces toma 1,22 segundos p>
Para una tabla sin una clave primaria, consultar el ID de fila 1 millón de veces toma 1,23 segundos
(Esto es aproximadamente 2 segundos. Hay dos posibilidades para juzgar la brecha. La primera es el tiempo de ejecución del programa error La segunda posibilidad se debe a que la clave principal es ID, que es más pequeña que la longitud del ID de fila, por lo que se aprovecha el tiempo al empalmar declaraciones SQL)
Optimización de recuperación:
Asignación. ¿Un valor para ordenar para cada recuperación tarda aproximadamente 1 minuto y 20 segundos?
[csharp]?
SQLiteCommand cmd = new SQLiteCommand(conn ?
); for (int i = 0; i < 1000000; i++)?
{ www.2cto.com ?
cmd.CommandText = " seleccionar * de aaa donde id=" + ( 1000000 + i); ?
cmd.ExecuteNonQuery(); ?
} ?
Recuperar pares cada vez La asignación de parámetros tarda unos 58 segundos
[csharp]?
SQLiteCommand cmd = new SQLiteCommand(conn); ?
cmd.CommandText = "seleccionar * de aaa donde id=@id"? p>
cmd.Parameters.Add("id", DbType.Int32 ?
for (int i = 0; i < 1000000 ; i++)?
{ www.2cto.com ?
cmd.Parameters[0].Value = (1000000 + i);
cmd. }