मैं एक स्थानीय SQLite डेटाबेसSQLite - SQLite डेटाबेस से डेटा पढ़ने का सबसे तेज़ तरीका?
टेबल विवरण
-- 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
है और यह 15 मिनट के ऊपर SQL क्वेरी के लिए सहेज लिया!
कृपया एसएमएल क्वेरी अनुकूलित किया जा सकता है तो कृपया lmk कृपया!
पहले से LIKE
साथ
सहसंबंधित सबक्वायरी + 'LIKE' = विशाल प्रदर्शन हिट – cdhowie
@cdhowie - मुझे पता है, लेकिन अन्य समाधान क्या हैं? मुझे लगता है कि क्वेरी किसी भी तरह अनुकूलित किया जाना चाहिए! –
मुझे नहीं लगता कि आपकी स्कीमा को पूरी तरह से बदलने के बिना इसे अनुकूलित करने का एक आसान तरीका है। – cdhowie