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

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

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

学习的路是漫长的

代码的路也是漫长的

共勉

原文地址:https://www.cnblogs.com/myblogslh/p/12154379.html

时间: 2024-08-01 10:44:34

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

【代码学习】角色添加权限的方法,先删除,再添加。而不是用修改,这样很方便。

@Overridepublic void addRoleResources(Resources[] resources, Long roleId) { Map<String, Object> params = new HashMap<>(); params.put("roleId", roleId); this.dao.delete("role.deleteRoleResources", params); if (resources != n

向后端请求数据 以及像后端发送数据要求(删除数据和添加数据)

删除数据和添加数据只能后端操作 删除数据和添加数据都要用到的html(一)部分 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="../css/bootstrap.min.css"

先删除再添加

2013年11月4日记录到: 之前看TCBS的代码,经常有这种代码:判断某个key在集合中是否存在,然后如果存在的话,就先删除,再添加.以前一直以为这是无用功,要么是为了使开发一致,所以这么做的.不过这么做是很有意义的.首先,对于缓存来说,如果最后访问时间策略,这么改是有道理的.其次,因为,虽然key一样,但是value很可能发生变化了.所以先删除再添加,相当于更新了value,符合逻辑.不然的话在用的时候逻辑很可能就不正确了.

解决在mysql表中删除自增id数据后,再添加数据时,id不会自增1的问题

https://blog.csdn.net/shaojunbo24/article/details/50036859 问题:mysql表中删除自增id数据后,再添加数据时,id不会紧接.比如:自增id 1 2 3 4 现在删除4,就变成了 1 2 3 这时候,如果增加一条数据,会变成 1 2 3 5 上面5不是我们想要的结果,4才是理想的id,解决方法是,在删除4之后,执行下面的sql语句: ALTER TABLE table_name AUTO_INCREMENT = 1; 原文地址:http

大数据究竟是什么?大数据有哪些技术呢?

大数据究竟是什么?大数据有哪些技术呢?科多大数据来带你看看大数据的发展趋势是什么.今天的数据不是大,真正有意思的是数据变得在线了,这个恰恰是互联网的特点.""非互联网时期的产品,功能一定是它的价值,今天互联网的产品,数据一定是它的价值.""你千万不要想着拿数据去改进一个业务,这不是大数据.你一定是去做了一件以前做不了的事情."有人把数据比喻为蕴藏能量的煤矿.煤炭按照性质有焦煤.无烟煤.肥煤.贫煤等分类,而露天煤矿.深山煤矿的挖掘成本又不一样.与此类似,大数

数据去重2---高性能重复数据检测与删除技术研究一些零碎的知识

高性能重复数据检测与删除技术研究 这里介绍一些零碎的有关数据重删的东西,以前总结的,放上可以和大家交流交流. 1 数据量的爆炸增长对现有存储系统的容量.吞吐性能.可扩展性.可靠性.安全性. 可维护性和能耗管理等各个方面都带来新的挑战, 消除冗余信息优化存储空间效率成为 缓解存储容量瓶颈的重要手段,现有消除信息冗余的主要技术包括数据压缩[8]和数据去 重. 2 数据压缩是通过编码方法用更少的位( bit)表达原始数据的过程,根据编码 过程是否损失原始信息量,又可将数据压缩细分为无损压缩和有损压缩.

大数据操作:删除和去重

一些看似简单的数据操作,当作用于海量数据集时,就会出现"意料之外,却在情理之中"的问题,海量数据操作,需要采用特殊方法,才能"曲径通幽".在删除海量数据时,需要注意日志的增长,索引碎片的增加和数据库的恢复模式,特别是利用大容量日志操作,来减少日志的增长和提高数据插入的速度.对于大数据去重,通过一些小小的改进,比如创建索引,设置忽略重复值选项等,能够提高去重的效率. 一,从海量数据中删除数据 从海量数据表中删除一半数据,看似简单,使用delete命令,如果真这么干,S

数据 更新 插入 删除

1.UPDATE实现对数据的更新操作,语法如下:①.更新单行数据:UPDATE dbtab SET f1=g1 ... fn=gn WHERE .f表组建字段名,g为新设定的值,WHERE为确保只更新单行.注:除f=g外还可 f=f+g.f=f-g通过工作区更改单行数据:UPDATE dbtab FROM wa.②.更新多行数据:UPDATE dbtab SET f1=g1 ... fi=gi [WHERE ].也可以使用SET和WHERE子句同时更新多行数据值:此外不需要在WHERE中限定所有

SQL 数据插入、删除 大数据

--测试表 CREATE TABLE [dbo].[Employee] ( [EmployeeNo] INT PRIMARY KEY, [EmployeeName] [nvarchar](50) NULL, [CreateUser] [nvarchar](50) NULL, [CreateDatetime] [datetime] NULL );--1.循环插入 SET STATISTICS TIME ON; DECLARE @Index INT = 1; DECLARE @Timer DATET