關於某些數據究竟是刪除了再添加好還是直接修改比較好

今天心血來潮,尋思如果改一條數據,採用刪除更快還是修改更快一些

我使用的是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

學習的路是漫長的

代碼的路也是漫長的

共勉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章