数据库记录的删除,delete好还是update好?

个人认为还是使用Update比较好。
经过一些测试,发现几乎所有数据库使用delete语句后,数据库文件大小并没有变小,以致数据库的每次插入操作,都会使数据库体积变大。

与其删不掉,还是让他留着吧。发现使用Update的时候,只要新的数据不比原来的大,数据库体积就不会增大(文件存到数据库很容易看出效果)。

所以个人建议使用Update方式标记删除记录,添加新记录的时候如果存在标记为删除的记录,则更新该条记录为新记录。添加新记录时的判断也比较简单:

代码如下:

rs.Open "select * from tableName where deleted=1 order by ID asc" 
If rs.EOF Then rs.AddNew 
rs(1).Value="..."; 
'..... 
rs.Update

我们需要添加新数据时,先查询有没有标记为删除的数据,如果没有(rs.EOF)则插入记录(addNew),否则将新数据覆盖掉第一条查询到的记录。

(0)

相关推荐

  • 数据库记录的删除,delete好还是update好?

    个人认为还是使用Update比较好. 经过一些测试,发现几乎所有数据库使用delete语句后,数据库文件大小并没有变小,以致数据库的每次插入操作,都会使数据库体积变大. 与其删不掉,还是让他留着吧.发现使用Update的时候,只要新的数据不比原来的大,数据库体积就不会增大(文件存到数据库很容易看出效果). 所以个人建议使用Update方式标记删除记录,添加新记录的时候如果存在标记为删除的记录,则更新该条记录为新记录.添加新记录时的判断也比较简单: 复制代码 代码如下: rs.Open "sele

  • Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录

    System.out和System.err都被打印到catalina.out.catalina.out不会rotate.一般在部署Tomcat后,运行久了,catalina.out文件会越来越大,对系统的稳定造成了一定的影响. 1.可通过修改conf/logging.properties日志配置文件来屏蔽掉这部分的日志信息. [root@localhost conf]# pwd /usr/local/tomcat/conf [root@localhost conf]# cp logging.pr

  • 详解.NET6下的Modbus通讯和数据库记录

    所用的包: <Project Sdk="Microsoft.NET.Sdk">   <PropertyGroup>     <OutputType>WinExe</OutputType>     <TargetFramework>net6.0-windows</TargetFramework>     <Nullable>enable</Nullable>     <UseWindow

  • 使用数字签名实现数据库记录防篡改(Java实现)

    本文大纲 一.提出问题 二.数字签名 三.实现步骤 四.参考代码 五.后记 六.参考资料 一.提出问题 最近在做一个项目,需要对一个现成的产品的数据库进行操作,增加额外的功能.为此,需要对该产品对数据库有什么操作进行研究(至于怎么监控一个产品的操作会引发什么数据库操作,以后会详细解说).本来已经对数据库的操作了如指掌的,无意中发现数据库表里的每条记录都会有这样一个字段: 这感觉不妙了,字段名叫signature,顾名思义,就是签名的意思呀.难道数据库表中的每条记录都会有签名?也就是说如果我不能正

  • Mybatis如何使用动态语句实现批量删除(delete结合foreach)

    目录 下面我将演示如何使用动态语句批量删除数据库数据 下面是项目的结构 1.IEmpDAO.java为接口提供批量删除数据方法 2.EmpDAOImpl.java为接口的实现类 3.MybatisSqlSessionFactory.java 4.Emp.java为实体类 5.Emp.xml为映射文件 6.mybatis_cfg.xml为mybatis主配置文件 7.pom.xml为maven引入依赖的文件 8.Test.java为测试类 下面我将演示如何使用动态语句批量删除数据库数据 本人在数据

  • MongoDB实现创建删除数据库、创建删除表(集合 )、数据增删改查

    一. 数据库使用 开启 mongodb 服务:要管理数据库,必须先开启服务,开启服务使用 mongod --dbpath c:\mongodb 管理 mongodb 数据库:(一定要在新的 cmd 中输入) mongo 清屏: cls 查看所有数据库列表 show dbs 二. 创建数据库 使用数据库.创建数据库 use student 如果真的想把这个数据库创建成功,那么必须插入一个数据.数据库中不能直接插入数据,只能往集合(collections)中插入数据.不需要专门创建集合,只需要写点语

  • asp中通过getrows实现数据库记录分页的一段代码

    <%@ Language = VBSCRIPT %> <% Option Explicit %> <% rem 在asp中通过getrows实现数据库记录分页的一段代码 Dim iStart, iOffset iStart = Request("Start") iOffset = Request("Offset") if Not IsNumeric(iStart) or Len(iStart) = 0 then iStart = 0 e

  • 在asp中通过getrows实现数据库记录分页的一段代码

    复制代码 代码如下: <%@ Language = VBSCRIPT %>  <% Option Explicit %>  <%  rem 在asp中通过getrows实现数据库记录分页的一段代码    Dim iStart, iOffset    iStart = Request("Start")    iOffset = Request("Offset") if Not IsNumeric(iStart) or Len(iStart

  • 分页显示Oracle数据库记录的类之一

    <?php /********************************************* TOracleViewPagev 2.0 日期:2000-9-23 分页显示Oracle数据库记录的类 更新日期:2000-10-19 增加显示TopRecord的功能,允许第一页显示的记录数与其它页不同. 作者:sharetop email:ycshowtop@21cn.com ***********************************************/ class T

  • Oracle数据库"记录被另一个用户锁住"解决方法(推荐)

    1.先来看看为什么会出锁住: 数据库是一个多用户使用的共享资源.当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性. 加锁是实现数据库并发控制的一个非常重要的技术.当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁.加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作. 在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X

随机推荐