i have a local SQLite database
TABLE DETAILS
-- 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)
)
现在这个列表非常巨大,我需要保存其中的数据。
以下是我的实现方法。
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);
我希望能够更快地保存列表,需要一种更好的方法。
VALID_LIST 中的总条目数为 2639117 条。
以上 SQL 查询花费了 15 分钟来保存它!
如果 SQL 查询可以进行优化,请告知我!
提前致谢。
LIKE
= 性能大幅下降 - cdhowie