在下面的c#程序中,如何提高修改数据库的速度??求好心人帮忙解决!

这个是获取本地文件夹下的所有文件名的方法
这个是根据主键修改数据库中的状态的方法
这个是获取数据库中的主键和文件名
这个方法是调用上面的三个方法
这个是本地文件夹下的所有文件 (文件夹下会有几万个文件,这个只是测试)
这是数据库表数据,要修改表中的StatusFile的状态,这个表中有几十万条数据

根据上面的图片,谁能帮我提升一下 修改速度啊!自己测试的30分钟才修改4千多条,修改几十万条数据要等很长时间了,哪位大神帮帮我啊,我是新手, 论坛上没有币,希望有好心人帮我解决一下。

已经解决了,原来是我程序写的有点问题,把获取文件名的List放到for循环外面就可以了,真是大意了

///

/// 对比表中文件名和实体文件名是否一样,并修改状态
///

/// 要查询的表名

/// 批次日期范围
/// 文件夹的路径
public void updateDispatch(string tableDispatchName, string batchScope, string filePath)
{
try
{
DataSet dataSet = getDispatchFileName(tableDispatchName, batchScope);
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
int key = Int32.Parse(dataRow["ApplicationKey"].ToString()); //主键
string wenJianCFLJ = dataRow["WenJianCFLJ"].ToString(); //数据库中文件的路径
string wenJianName = wenJianCFLJ.Substring(wenJianCFLJ.LastIndexOf("/") + 1); //截取字符串,获取文件名
List fileNameList = getFilesName(filePath); //获取文件名
string statusFile = "";
if (fileNameList.Contains(wenJianName)) //判断数据库中的文件名和本地文件夹下的文件名是否相同
{
statusFile = "OK";
updateDispatchStatusFile(tableDispatchName, statusFile, key); //修改数据库statusFile为OK
}
else
{
statusFile = "error";
updateDispatchStatusFile(tableDispatchName, statusFile, key); //修改数据库statusFile为error
}
}
}
catch (Exception ex)
{
Log.writeLog(ex); //打印异常日志
}
}

    /// <summary>   
    /// 获取数据库的信息 WenJianCFLJ字段为文件的路径
    /// </summary>   
    /// <param name="tableDispatchName">要查询的表名</param>   
    ///  <param name="batchScope">批次日期范围</param>     
    public DataSet getDispatchFileName(string tableDispatchName, string batchScope)
    {
        MySqlDataAdapter dataAdapter;            // 声明DataAdapter
        MySqlConnection myconn = SqlConnection.getMySqlConn();
        string sql = "SELECT ApplicationKey,WenJianCFLJ FROM " + tableDispatchName + 
                     " WHERE BatchScope = '" + batchScope + "' AND StatusDispatch = 'OK' ";
        MySqlCommand cmd = new MySqlCommand(sql, myconn);
        myconn.Open();                           //连接
        dataAdapter = new MySqlDataAdapter();    // 初始化 DataAdapter
        dataAdapter.SelectCommand = cmd;
        DataSet dataSet = new DataSet();       // 声明并初始化DataSet
        dataAdapter.Fill(dataSet);               // 填充 DataSet
        myconn.Close();
        return dataSet;
    }

    /// <summary>   
    /// 修改表中的文件名对比状态
    /// </summary>   
    /// <param name="tableDispatchName">要修改的表名</param>   
    ///  <param name="statusFile">文件名对比状态</param>
    ///  <param name="applicationKey">根据主键修改</param>
    public void updateDispatchStatusFile(string tableDispatchName, string statusFile, int applicationKey)
    {
        try
        {
            MySqlConnection myconn = SqlConnection.getMySqlConn();
            string sql = "UPDATE " + tableDispatchName + 
                         " SET StatusFile = '" + statusFile + "' " +
                         " WHERE ApplicationKey = '" + applicationKey + "'";
            Console.WriteLine(sql);
            MySqlCommand cmd = new MySqlCommand(sql, myconn);
            myconn.Open();
            cmd.CommandTimeout = 100;
            //执行SQL语句  ExecuteNonQuery为 增、删、改的方法
            int i = cmd.ExecuteNonQuery(); Console.WriteLine(i);
            myconn.Close();
            cmd.Dispose();
        }
        catch (Exception ex)
        {
            Log.writeLog(ex);
        }
    }

    /// <summary>   
    /// 获取文件夹下所有文件的文件名
    /// </summary>   
    /// <param name="filePath">文件夹的路径</param>   
    public List<string> getFilesName(string filePath)
    {
        DirectoryInfo dir = new DirectoryInfo(filePath);
        List<String> listFileName = new List<string>();
        if(dir.Exists)
        {
            FileInfo[] files = dir.GetFiles();
            foreach(var item in files)
            {
                listFileName.Add(item.Name);    //item.Name为文件名,带有后缀名
            }
        }
        return listFileName;
    }

            我把代码复制下来了,求大神帮我解决下。