Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL查询会随着每次迭代而变慢吗?_C#_Sql_Performance_Sql Server Ce - Fatal编程技术网

C# SQL查询会随着每次迭代而变慢吗?

C# SQL查询会随着每次迭代而变慢吗?,c#,sql,performance,sql-server-ce,C#,Sql,Performance,Sql Server Ce,是否有任何方法可以加快此SQL查询的速度?它在.sdf数据库中搜索匹配的单词。数据按字母顺序排列。目前搜索大约需要10-15秒,搜索的第一次迭代似乎相当快,但是每次迭代搜索都会变慢?为什么会这样?抱歉,这是我第一次使用SQL private void Search_Database() //Searches SQL Database for matching words { Possible_Words.Clear(); using (var cn = new SqlCeConn

是否有任何方法可以加快此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);
}
一些提示:

  • 不要在查询中使用
    *
    ,而是使用所有字段名

  • 字段上创建索引

  • 在创建连接对象和命令之外生成查询

  • 在代码开头不需要连接时打开连接

  • 如果你考虑这些技巧,你的代码会变得更快。

    一些提示:

  • 不要在查询中使用
    *
    ,而是使用所有字段名

  • 字段上创建索引

  • 在创建连接对象和命令之外生成查询

  • 在代码开头不需要连接时打开连接


  • 如果你考虑了这些技巧,你的代码会变得更快。

    SqLtPrimes为什么浪费宝贵的CPU周期来保护我的代码。Jesus有一个点(尽管它可能是钝的)。使用
    SqlParameter
    s构建命令语句。此外,如果每次迭代循环时都要打开
    SqlConnection
    ,那么应该将
    using SqlCeConnection
    语句放在循环之外。SqlParameter为什么要浪费宝贵的CPU周期来保护我的代码。Jesus有一个观点(尽管可能是迟钝的)。使用
    SqlParameter
    s构建命令语句。此外,如果每次迭代循环时都要打开
    SqlConnection
    ,则应将
    usingsqlceconnection
    语句置于循环之外。实际上,对于单用户内存数据库(至少是SQL Compact),连接处理的一般规则也不适用。创建它们需要很多开销,如果可能的话,它们应该被重用。实际上,对于单用户内存数据库(至少是SQL Compact),连接处理的一般规则也不适用。创建它们需要很多开销,如果可能的话,它们应该被重用。