【发布时间】:2011-10-11 12:00:07
【问题描述】:
有没有办法让这个 SQL 查询更快?它在.sdf 数据库中搜索匹配的单词。数据按字母顺序排列。目前搜索大约需要 10-15 秒,搜索的第一次迭代似乎相当快但是每次迭代搜索都会变慢?为什么是这样?抱歉,这是我第一次接触 SQL。
private void Search_Database() //Searches SQL Database for matching words
{
Possible_Words.Clear();
using (var cn = new SqlCeConnection(@"Data Source=|DataDirectory|\Resource\Wordlist.sdf"))
{
cn.Open();
using (var cmd = cn.CreateCommand())
{
string[] Final_Search_Array = (string[])Packaged_Search_Array.ToArray(typeof(string)); // Receives and Unwraps Packaged Array
int Search_Array_Index = Final_Search_Array.Length - 1;
for (; Search_Array_Index != -1; Search_Array_Index = Search_Array_Index - 1)
{
switch (Final_Search_Array[Search_Array_Index].Length)
{
case 2:
Search_Table = "[2 Letter Words]";
break;
case 3:
Search_Table = "[3 Letter Words]";
break;
case 4:
Search_Table = "[4 Letter Words]";
break;
case 5:
Search_Table = "[5 Letter Words]";
break;
case 6:
Search_Table = "[6 Letter Words]";
break;
}
cmd.CommandText = "Select * from " + Search_Table + " where [Melted] like '%" + Final_Search_Array[Search_Array_Index] + "%'";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Possible_Words.Add(reader["Word"].ToString());
}
}
}
}
cn.Close();
}
FullList_PossibleWords.Add(Possible_Words);
}
【问题讨论】:
-
SqlParameter 为什么要浪费宝贵的 CPU 周期来保护我的代码。
-
耶稣有一个观点(尽管它可能很钝)。使用
SqlParameters 构建您的命令语句。此外,如果您在每次迭代循环时都重新打开SqlConnection,则应将using SqlCeConnection语句放在循环之外。
标签: c# sql performance sql-server-ce