tengo una base de datos local SQLiteSQLite: ¿la forma más rápida de leer datos de la base de datos SQLite?
Tabla detallada
-- Describe PREFIX_LIST
CREATE TABLE PREFIX_LIST(ITEM VARCHAR(25) PRIMARY KEY)
-- Describe SUFFIX_LIST
CREATE TABLE SUFFIX_LIST(ITEM VARCHAR(25) PRIMARY KEY)
-- Describe VALID_LIST
CREATE TABLE VALID_LIST (
"PART1" TEXT,
"PART2" TEXT,
PRIMARY KEY(PART1, PART2)
)
ahora esta lista es realmente enorme, y necesito que guardar los datos de ella.
Aquí está mi implementación.
SQLiteConnection con = null;
SQLiteCommand cmd = null;
Connect(DbPath, ref con, ref cmd);
cmd.CommandText =
"SELECT PART1 || '@' || PART2 FROM VALID_LIST
WHERE NOT EXISTS
(SELECT * FROM PREFIX_LIST WHERE VALID_LIST.PART1 LIKE '%' || ITEM || '%')
AND NOT EXISTS
(SELECT * FROM SUFFIX_LIST WHERE VALID_LIST.PART2 LIKE '%' || ITEM || '%')";
var reader = cmd.ExecuteReader();
if (reader.HasRows)
{
string savePath;
if (SaveTextFile(out savePath) == DialogResult.OK)
{
TextWriter writer = new StreamWriter(savePath);
while (reader.Read())
{
writer.WriteLine(reader.GetString(0));
}
writer.Close();
writer.Dispose();
}
}
reader.Close();
reader.Dispose();
cmd.Dispose();
con.Close();
con.Dispose();
MessageBox.Show("List Saved!.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
Necesito una mejor manera en que puedo guardar la lista más rápido. entradas totales en VALID_LIST es 2639117
y tardó 15 minutos para salvarlo de la consulta SQL anterior!
por favor lmk si la consulta sql se puede optimizar!
Gracias de antemano
Subconsulta correlacionada + 'LIKE' = rendimiento enorme hit – cdhowie
@cdhowie - lo sé, pero ¿qué otra solución? ¡Creo que la consulta debe ser optimizada de alguna manera! –
No creo que haya una manera fácil de optimizar esto sin alterar por completo su esquema. – cdhowie