zoukankan      html  css  js  c++  java
  • 临时表与中间表

    外部临时表:

    通过CREATE TEMPORARY TABLE 创建的临时表,这种临时表称为外部临时表。这种临时表只对当前用户可见,当前会话结束的时候,该临时表会自动关闭。这种临时表的命名与非临时表可以同名(同名后非临时表将对当前会话不可见,直到临时表被删除)。

     

    内部临时表:

    内部临时表是一种特殊轻量级的临时表,用来进行性能优化。这种临时表会被MySQL自动创建并用来存储某些操作的中间结果。这些操作可能包括在优化阶段或者执行阶段。这种内部表对用户来说是不可见的,但是通过EXPLAIN或者SHOW STATUS可以查看MYSQL是否使用了内部临时表用来帮助完成某个操作。

     delete和trucate的区别:

    1. truncate table wp_comments;
    2. delete * from wp_comments;

    其中truncate操作中的table可以省略,delete操作中的*可以省略。这两者都是将wp_comments表中数据清空,不过也是有区别的,如下:

    • truncate是整体删除(速度较快), delete是逐条删除(速度较慢)。
    • truncate不写服务器log,delete写服务器log,也就是truncate效率比delete高的原因。
    • truncate不激活trigger(触发器),但是会重置Identity(标识列、自增字段),相当于自增列会被置为初始值,又重新从1开始记录,而不是接着原来的ID数。而delete删除以后,Identity依旧是接着被删除的最近的那一条记录ID加1后进行记录。

    程度从强到弱

    1、drop  table tb 
          删除表的结构和数据,没有办法找回
    2、truncate (table) tb
          删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度快,不能与where一起使用
    3、delete from tb (where)
          一行一行地删除所有记录,表结构还在,写日志,可以恢复的,速度慢。
     
    区别:truncate和delete的区别
             1、事务:truncate是不可以rollback的,但是delete是可以rollback的;
                  原因:truncate删除整表数据(ddl语句,隐式提交),delete是一行一行的删除,可以rollback
             2、效果:truncate删除后将重新水平线和索引(id从零开始) ,delete不会删除索引    
             3、 truncate 不能触发任何Delete触发器。
             4、delete 删除可以返回行数
  • 相关阅读:
    Android 手势&触摸事件
    vim常用命令总结
    关于背景中的雪花
    博客园美化——看板娘
    组合数
    扩展欧几里得和求逆元
    dfs序
    RMQ问题
    NOIP2017 列队
    线段树详解
  • 原文地址:https://www.cnblogs.com/domi22/p/8538628.html
Copyright © 2011-2022 走看看