关于某些数据究竟是删除了再添加好还是直接修改比较好
Posted myblogslh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于某些数据究竟是删除了再添加好还是直接修改比较好相关的知识,希望对你有一定的参考价值。
今天心血来潮,寻思如果改一条数据,采用删除更快还是修改更快一些
我使用的是EF,没有做任何的封装,纯简单的引入
第一次我用了一万条数据做测试
结果显而易见,光删除数据用了39秒。更别说再添加一万条数据了
第二次我用了5000条数据做测试
但是让我困惑的是,居然用了1分多进行删除
第三次用一千条数据做测试
修改几乎没有用多少时间
忽然觉着,也许当你针对某些数据进行修改的时候,还是采用直接修改的方法比较好一些
这个时候 非物理删除就起到了很好的作用
只是这个字段一旦加上,就一定要小心小心再小心,最好直接封装到底层,要不然,一个疏忽,就可能会有意外的惊喜。
而且还好针对唯一性做验证,假如有一条一模一样的数据,究竟是改状态还是添加一条新的数据
我的ef 并没有做任何处理,以下是我的代码
1 MyEntities myTest = new MyEntities(); 2 Console.WriteLine("1000"); 3 var remeData = myTest.TestTable1.Where(c => c.Id <= 27000).ToList(); 4 var aTime = DateTime.Now; 5 myTest.TestTable1.RemoveRange(remeData); 6 myTest.SaveChanges(); 7 var bTime = DateTime.Now; 8 var remeTime = bTime - aTime; 9 Console.WriteLine($"Remove: 原始时间:{aTime},结束时间:{bTime},用时:{remeTime}"); 10 var modifyData = myTest.TestTable1.Where(c => c.Id > 27000 && c.Id <= 28000).ToList(); 11 var cTime = DateTime.Now; 12 foreach (var item in modifyData) 13 { 14 item.Name = "123"; 15 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"; 16 } 17 myTest.SaveChanges(); 18 var dTime = DateTime.Now; 19 var modifyTime = dTime - cTime; 20 Console.WriteLine($"Modify: 原始时间:{cTime},结束时间:{dTime},用时:{modifyTime}"); 21 Console.WriteLine("完成"); 22 Console.ReadLine();
1 public MyEntities() : base("EFDbContext") 2 { 3 Database.SetInitializer<MyEntities>(null); 4 } 5 public DbSet<TestTable1> TestTable1 { get; set; } 6 protected override void OnModelCreating(DbModelBuilder modelBuilder) 7 { 8 modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 9 base.OnModelCreating(modelBuilder); 10 } 11 } 12 13 public class TestTable1 14 { 15 public int Id { get; set; } 16 public string Name { get; set; } 17 public string Content { get; set; } 18 }
也有可能是我没有任何封装的缘故吧
为此我决定开始好好专研以下ef
学习的路是漫长的
代码的路也是漫长的
共勉
以上是关于关于某些数据究竟是删除了再添加好还是直接修改比较好的主要内容,如果未能解决你的问题,请参考以下文章