呵呵.
因为 DELETE 只是将数据标识为删除,
并没有整理数据文件.
当插入新数据后.
会再次使用这些被置为删除标识的记录空间.

解决方案 »

  1. 原来如此..我想删除delete后的实际数据,该如何?是否有什么语句来执行这个操作?谢谢shuixin13.
      

  2. delete from tb_name
    当删除数据表所有记录时,会释放空间。
      

  3. 这是个笨办法,大家看看有没有别的方法?CREATE TABLE abc as SELECT * FROM tb_name;
    DROP TABLE tb_name;
    ALTER TABLE abc RENAME TO tb_name;
      

  4. 谢谢mathernatician!看看还有没有更好的方法,过些天再结帖
      

  5. 嗯.
    可以的.
    执行 SHOW TABLE STATUS 
    返回的记录中有一个 Date_free 字段.它显示的是 MyISAM 的表浪费空间.
    对于 InnoDB 表, 在 Comment 字段中显示使用 OPTIMIZE TABLE 指令可以优化它.
    不过这个指令目前只适用于 MyISAM 和 BDB 表类型,
    对于 InnoDB 表, 目前只能通过数据导出,重建表,再导入数据实现
      

  6. For the moment, OPTIMIZE TABLE works only on MyISAM, BDB and InnoDB tablesInnoDB也可以的吧??上面这句是我在Mysql Reference Manual for version 5.0.0-alfpa里看到的
      

  7. 我也非常想知道wwwliaole(无聊)朋友问的问题:
    1.可不可以通过语句来求得逻辑删除的表的数据如果可以,该怎么获得呢?(是数据,不是数据大小)
      

类似问题 »