Error message here!

Hide Error message here!

忘记密码?

Error message here!

请输入正确邮箱

Hide Error message here!

密码丢失?请输入您的电子邮件地址。您将收到一个重设密码链接。

Error message here!

返回登录

Close

关于某些数据究竟是删除了再添加好还是直接修改比较好

临冰听雪丶 2020-01-05 23:43:00 阅读数:48 评论数:0 点赞数:0 收藏数:0

今天心血来潮,寻思如果改一条数据,采用删除更快还是修改更快一些

我使用的是EF,没有做任何的封装,纯简单的引入

第一次我用了一万条数据做测试

 

 结果显而易见,光删除数据用了39秒。更别说再添加一万条数据了

第二次我用了5000条数据做测试

但是让我困惑的是,居然用了1分多进行删除

 

第三次用一千条数据做测试

 

 修改几乎没有用多少时间

忽然觉着,也许当你针对某些数据进行修改的时候,还是采用直接修改的方法比较好一些

这个时候 非物理删除就起到了很好的作用

只是这个字段一旦加上,就一定要小心小心再小心,最好直接封装到底层,要不然,一个疏忽,就可能会有意外的惊喜。

而且还好针对唯一性做验证,假如有一条一模一样的数据,究竟是改状态还是添加一条新的数据

我的ef 并没有做任何处理,以下是我的代码

 

 

 MyEntities myTest = new MyEntities();
 Console.WriteLine("");
 var remeData = myTest.TestTable1.Where(c => c.Id <= ).ToList();
 var aTime = DateTime.Now;
  myTest.TestTable1.RemoveRange(remeData);
  myTest.SaveChanges();
 var bTime = DateTime.Now;
 var remeTime = bTime - aTime;
 Console.WriteLine($"Remove: 原始时间:{aTime},结束时间:{bTime},用时:{remeTime}");
 var modifyData = myTest.TestTable1.Where(c => c.Id > && c.Id <= ).ToList();
 var cTime = DateTime.Now;
 foreach (var item in modifyData)
  {
 item.Name = "";
 item.Content = "FDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjgFDSFSDGFDFHGFDHFGHJGFHJGHJfhdfgdgsklgjasl;fkjdalghjdlskjgndklfgjds;flkgjsdkflgjdskfjgkdslfjg";
  }
  myTest.SaveChanges();
 var dTime = DateTime.Now;
 var modifyTime = dTime - cTime;
 Console.WriteLine($"Modify: 原始时间:{cTime},结束时间:{dTime},用时:{modifyTime}");
 Console.WriteLine("完成");
 Console.ReadLine();
 public MyEntities() : base("EFDbContext")
  {
 Database.SetInitializer<MyEntities>(null);
  }
 public DbSet<TestTable1> TestTable1 { get; set; }
 protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
 modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
 base.OnModelCreating(modelBuilder);
  }
  }

public class TestTable1
  {
 public int Id { get; set; }
 public string Name { get; set; }
 public string Content { get; set; }
 }

也有可能是我没有任何封装的缘故吧

为此我决定开始好好专研以下ef

学习的路是漫长的

代码的路也是漫长的

共勉

版权声明
本文为[临冰听雪丶]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/myblogslh/p/12154379.html