在表中插入相关数据的速度比预期慢

0kjbasz6  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(295)

我创建了一个记录家庭成员名单的程序。
这些记录是用索引卡写的。
在索引卡上。它包含祖先及其亲属。
我有两张table
表1
有关祖先的信息,如名称、id(自动递增)、文件名、用户名(电脑中的那个)
表2
有关亲属的信息,如姓名、祖先身份证(来自表1)
有20个人在使用这个程序。所以在插入亲戚之前,我需要得到插入祖先时生成的id。
有时索引中有10个亲戚。有时有20个
这是我的存储过程

  1. INSERT INTO tbl_ancestor(an,`as`, dd, cn, su, mm, stn, re, yy, st, filename, username, `zipName`, `batchName`, `folderName`, `remark`)
  2. VALUES(_an, _as, _dd, _cn, _su, _mm, _stn, _re, _yy, _st, _fname, _username, _zipName, _batchName, _folderName, _remark);
  3. SELECT ID, filename, username, zipName, batchName, foldername FROM tbl_ancestor;

但是当数据库中的记录 10000 它等待5秒钟,等待消息提示数据已保存。
我只使用select语句。因为我想如果我使用一个 linq 在我的c#代码中获取祖先的id以供亲属使用。但速度是一样的。
这是我的查询中的错误吗?
或者在我的密码里?

  1. foreach (var item in tag.RelativeList)
  2. {
  3. using (MySqlCommand cmd = new MySqlCommand("sp_insert_relative", conn)
  4. {
  5. CommandType = System.Data.CommandType.StoredProcedure
  6. })
  7. {
  8. if (conn.State == System.Data.ConnectionState.Closed)
  9. conn.Open();
  10. cmd.Parameters.AddWithValue("_ancestor_id", id);
  11. cmd.Parameters.AddWithValue("_rgn", item.RGN);
  12. cmd.Parameters.AddWithValue("_rsn", item.RSN);
  13. cmd.Parameters.AddWithValue("_sgn", item.SGN);
  14. cmd.Parameters.AddWithValue("_ssn", item.SN);
  15. cmd.Parameters.AddWithValue("_username", tag.Username);
  16. cmd.Parameters.AddWithValue("_fname", System.IO.Path.GetFileName(tag.FileName));
  17. cmd.ExecuteNonQuery();
  18. }
  19. }

有什么办法解决这个问题吗?让我的程序更快?我想不出解决的办法。我也一直在找。但我找不到具体的解决办法。或者我用错了搜索关键字?

eqqqjvef

eqqqjvef1#

  1. using (MySqlTransaction trans = conn.BeginTransaction())
  2. {
  3. foreach (var item in tag.RelativeList)
  4. {
  5. using (MySqlCommand cmd = new MySqlCommand("sp_insert_relative",conn)
  6. {
  7. CommandType = System.Data.CommandType.StoredProcedure
  8. })
  9. {
  10. if (conn.State == System.Data.ConnectionState.Closed)
  11. conn.Open();
  12. cmd.Parameters.AddWithValue("_ancestor_id", id);
  13. cmd.Parameters.AddWithValue("_rgn", item.RGN);
  14. cmd.Parameters.AddWithValue("_rsn", item.RSN);
  15. cmd.Parameters.AddWithValue("_sgn", item.SGN);
  16. cmd.Parameters.AddWithValue("_ssn", item.SN);
  17. cmd.Parameters.AddWithValue("_username", tag.Username);
  18. cmd.Parameters.AddWithValue("_fname", System.IO.Path.GetFileName(tag.FileName));
  19. cmd.ExecuteNonQuery();
  20. }
  21. trans.commit
  22. }
  23. }

可以使用mysqltransaction将数据插入或更新到数据库中。

展开查看全部

相关问题