首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

删除表时是否删除临时表上的索引?

删除表时,根据表的类型(临时表、普通表等),是否删除临时表上的索引取决于您要删除的操作类型和索引的类型。

如果删除的是一个普通表上的索引,那么索引和表本身都会被一起删除。因此,在执行 DELETE FROM tableName 语句时,SQL 引擎会在同时删除临时表上的索引。

如果删除的是一个临时表上的索引,那么 SQL 引擎会删除临时表上的索引,但不会删除该索引对应的普通表上的索引。这是因为临时表本身是为了某个操作(如查询)而创建的,它的出现和消失是由操作执行的。

如果您要删除表,您应该先确定该表是一个普通表还是一个临时表,然后根据上述情况进行索引的删除操作。

如果您需要创建索引来优化某个操作的性能,您可以使用 CREATE INDEX 语句来为一个或多个列创建索引。注意,如果您正在创建一个临时表上的索引,则应该在执行某个操作后删除这个索引,以便 SQL 引擎能够优化数据库的性能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL 临时建立及删除临时使用方式

MySQL 临时在我们需要保存一些临时数据是非常有用临时只在当前连接可见,当关闭连接,Mysql会自动删除并释放所有空间。...临时在MySQL 3.23版本中添加,如果你MySQL版本低于 3.23版本就无法使用MySQL临时。不过现在一般很少有再使用这么低版本MySQL数据库服务了。...如果你退出当前MySQL会话,再使用 SELECT命令来读取原先创建临时数据,那你会发现数据库中没有该存在,因为在你退出临时已经被销毁了。...---- 删除MySQL 临时 默认情况下,当你断开与数据库连接后,临时就会自动被销毁。当然你也可以在当前MySQL会话使用 DROP TABLE 命令来手动删除临时。...以下是手动删除临时实例: mysql> CREATE TEMPORARY TABLE SalesSummary ( -> product_name VARCHAR(50) NOT NULL

10.6K11

MySQL如何删除#sql开头临时

原因 如果MySQL在一个 ALTER TABLE操作(ALGORITHM=INPLACE)中间退出,那么可能会留下一个占用系统空间临时。...例如,在对一张(大)添加索引时中途中断、磁盘不足导致异常或正在添加索引实例被kill等等情况所致。...3.2 创建新方式删除 因为本例中没有存在.frm 和.ibd名称相同文件情况,因此采用创建一张与ibd空间对应结构(字段名及索引)一致,然后将frm文件拷贝为和ibd一致文件,再进行删除...[root@db4 testdb]# cp -p company20191216.frm \#sql-ib1516-2335726735.frm c) 删除 因为一步拷贝使用-p方式,即权限和原文件权限一致...注:删除这种100G不建议直接删除,而是通过创建硬链接方式处理。 3.3 修改frm文件名与ibd文件名一致 一步中删除ibd文件,其中一个frm也自动删除了。

5.6K20

安全删除MySQL大

一.简介 源码地址 日期:2018/4/12 介绍:工具用于安全删除MySQL,对于一些特定场景可能有用 应用场景:大批删除不走索引但是有主键场景[可以是单列索引,也可是多列索引] 实现思路:根据where...条件获取到主键值,然后重新拼接SQL 注:本工具仅用于学习,如用于生产,请充分测试 效果图: image.png 二.使用 适用:centos6+ 语言:中文 注意:必须有主键或者非空唯一索引 1.下载...git clone https://gitee.com/mo-shan/safe_delete.git cd safe_delete 2.配置,将这里mysql_path改成mysql工具绝对路径...*#mysql_path=\"/mysqlbinlog_path\"#g' bin/safe_delete 将这里safe_delete_path改成safe_delete家目录绝对路径 sed

4.5K20

Oracle分区删除分区数据导致索引失效解决

一、描述       今天有个小任务就是要删除些数据,哈哈,先自己小开心一下。因为要删除数据是我之前转换成分区。这个分区是按照里面有个创建时间字段来分区,1个季度为1个分区。...所以我现在要将2017年7月1日之前数据删除(数据量约1000万),可以直接删除分区数据就好。如果要是用delete去删除这么多数据,我还要写存储过程,分批提交这样做。...就是这样一简单truncate partition 引发了后继业务故障。最终查询到该索引失效,重建立后恢复。真是汗!...,答案是肯定删除分区,索引仍然失效。...通过失误,也让我看到了自己对知识点掌握不足。以后路还很远,振作起来,努力学习吧。让自己在后面的DB生涯中,少范错误,多多提高效率。

2.3K10

MySQL在删除IO错误原因分析

insert buffer背景知识 insert buffer是一种特殊数据结构(B+ tree),当辅助索引页面不在缓冲池中,它会将更改缓存起来,稍后在页面被其他读取操作加载到缓冲池中合并。...先判断过去1s之内服务器是否发生过活动(插入元组到页面、undo行操作等),如果发生过,则merge最大页面数为innodb_io_capacity设定5%。...如果检测到大于0,意味着还有依赖I/O未完成,睡眠20ms后重试; 此时认为已经没有冲突操作了,刷出所有脏页面或删除所有给定空间页面; 从空间缓存删除指定space记录; 删除对应数据文件...两线程交互如下图所示: ? 不出意外的话,在打中断点必然有线程在执行对应删除操作。...space id,如果space id是相同,直接删除对应ibuf记录(当前分配最大space id记录在系统空间,space id占4个字节,低于0xFFFFFFF0UL,分配读取系统空间保存

1.8K20

MySQL 超大删除方法

MySQL里面直接对大执行drop table删除有可能导致mysql hang住。必须使用些特殊方法。 先搞一个大表出来,如下图: ? 可以看到t2ibd大小为2.7GB了 ?...创建一个硬链接好处就是: 硬链接就是增加了对文件引用,只有对磁盘上文件引用完全没有了的话,这个文件才能是删除。...我们对t2.ibd 建立硬链接后,当我们执行drop table t2; 时候,实际只是删除了对t2.ibd一个文件引用,我们t2.ibd_hdlk对物理文件引用还是存在,就不会执行OS级别的删除操作...2、执行实际删除 droptable test.t2; 3、使用coreutils工具集执行OS级别的文件删除 下载地址: ftp://alpha.gnu.org/gnu/coreutils/ tar...这个小文件我们直接使用rm删除即可。 ? 这样就彻底删除掉这个t2大了。

6.8K50

MySQL删除数据,索引文件会不会变小?

这篇文章又让我了解到:原来删除数据,空间是不会释放... 一张千万级数据删除了一半数据,你觉得B+树索引文件会不会变小? 我们先来做个实验,看看表大小是如何变化??...开始user有1000W条数据,删除若干后,目前剩余约 550W 条 5、在删除约500W条记录后,再次查看表文件大小 ?...索引文件大小约 595 M,最后修改时间 10:34 实验结论: 对于千万级数据存储,删除大量记录后,文件大小并没有随之变小。好奇怪,是什么原因导致?...但是,如果修改内容包含了索引,那么操作步骤是先删除一个旧值,然后再插入一个新值。可能会造成空洞。 分析发现,新增、修改、删除数据,都可能造成空洞,那么有没有什么办法压缩空间?? ?...用临时文件替换A数据文件 删除A数据文件 与新建最大区别,增加了日志文件记录和重放功能。

2.7K51

MySQL异步删除方法

table命令.deletedelete命令逐行删除数据,涉及行锁,删除多条数据性能差.dropdrop命令会删除数据及结构、触发器、分区等。...truncate只能作用于;delete,drop可作用于、视图等。truncate会清空所有行,但结构及其约束、索引等保持不变;drop会删除结构及其所依赖约束、索引等。...truncate后会使索引所占用空间会恢复到初始大小;delete操作不会减少索引所占用空间,drop语句将所占用空间全释放掉。...因此,可以通过分批delete方式,建议where条件中最好带上主键或者是索引,加速删除效率。但对于大来说,这种方式性能太低。...,由内核自动完成,其原理是在删除,为数据文件在另外一个目录中创建一个硬连接。

4.3K110

SQL:删除中重复记录

,这里是name) select distinct (name) into # from test --查看新数据 select from # --清空旧表 truncate table test...--将新数据插入到旧表 insert test select from # --删除 drop table # --查看结果 select from test 查找中多余重复记录...peopleId in (select  peopleId  from  people  group  by  peopleId  having  count(peopleId) > 1)  2、删除中多余重复记录...a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq  having count() > 1)  4、删除中多余重复记录...“name”,而且不同记录之间“name”值有可能会相同,  现在就是需要查询出在该各记录之间,“name”值存在重复项;  Select Name,Count() From A Group

4.7K10

②【MySQL操作】 数据库创建、查询、修改、删除

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习路上摸爬滚打,记录学习过程~ 个人主页:.29.博客 学习社区:进去逛一逛~ 数据库创建、查询、...tb_emp CHANGE nickname username VARCHAR(30); ③删除字段 ALTER TABLE 名 DROP 字段名; -- 案例 -- 将tb_emp字段username...删除 ALTER TABLE tb_emp DROP username; ④修改名 ALTER TABLE 名 RENAME TO 新名; 删除操作: ①删除 DROP TABLE [IF EXISTS...] 名; -- 演示 -- 删除名为aaa -- 执行时,如果aaa不存在,报错: -- 错误代码: 1051 Unknown table '名' DROP TABLE aaa; -- 使用关键字...IF EXISTS -- 当要被删除不存在,不会再删除,也不会报错 DROP TABLE IF EXISTS aaa; ②删除指定,并重新创建该 TRUNCATE TABLE 名;

46550

Excel技巧:快速删除空行

标签:Excel技巧 有时候,中可能存在空行,如果我们需要删除这些空行,如何快速操作呢?特别是包含大量数据。为演示起见,下面的示例数据较少。...图2 单击“确定”后,Excel将选择中所有空行。 然后,单击功能区“开始”选项卡“单元格”组中删除——删除表格行”,即可删除空行。...情形2:复杂情形 你可能觉得这很简单,因为你碰到很规矩,除了空行外,中没有空单元格了。如果你碰到是如下图3所示,那么如何删除空行呢?...图4 一种方法是创建辅助列,合并中所有单元格内容。在右侧单元格输入公式: =TEXTJOIN("",TRUE,示例[@[编号]:[价格]]) 结果如下图5所示。...图7 选择这些空行,删除即可。

2.7K10

探寻大删除字段慢原因

《大删除字段为何慢?》案例中,提到删除一张大字段,产生了很多等待,但是测试环境模拟现象,看起来和生产,略有区别。...从这段内容中,有几点值得说明, 1. db file scattered read Oracle在执行全扫描(Full Table Scan,FTS)或全索引扫描(Index Full San),为保障性能...2. obj#=11111 obj#对应是dba_objects视图中字段object_id,所以,根据object_id,可以检索出object_name,就知道正是删除字段名,说明这些等待,...产生在删除字段。...关于大删字段,有些老师朋友,提供了他们碰见问题,以及建议, 1. kill删除字段会话,再次查询会报ORA-12986,需要truncate才能继续,此时要是没备份,就凉凉了。 ?

1.2K20

Mysql删除满足自己某个条件

问题描述: 自循环删除,大概意思就是删除一个表里部分数据,这些数据所满足条件也在自己表里 ,我有点儿晕,直接上代码,这是select出来,正常流程,如果要删除直接改成delete from …就行了...错误代码: 1093 You can't specify target table '名' for update in FROM clause 其实仔细想想逻辑还是有问题,循环用了同一张,会形成类似于死循环操作...,虽然我们明白这样好像没什么问题,但是电脑和你不一样, mysql在把子查询结果作为删除中数据条件,而mysql不允许在子查询同时删除数据 解决办法: 方法一、分步骤: 先创建临时 create...table tmp(SELECT DISTINCT 统计日期 FROM 名 WHERE 字段1='data1') 再执行删除 delete FROM 名 WHERE 统计日期 IN(SELECT...* FROM tmp) AND 字段1 'data1' 最后删除临时 drop table tmp 方法二直接删除 链接:https://blog.csdn.net/jaryle/article

2.7K20

MySQL删除三种方式

:delete语句是数据库操作语言(DML),truncate,drop是数据库定义语言(DDL); 效率:一般来说 drop > truncate> delete; 是否删除结构:truncate和...delete 只删除数据不删除结构,truncate 删除后将重建索引(新插入数据后id从0开始记起),而 delete不会删除索引 (新插入数据将在删除数据索引后继续增加),drop语句将删除结构包括依赖约束...,触发器,索引等; 安全性:drop和truncate删除不记录MySQL日志,不能回滚,delete删除会记录MySQL日志,可以回滚; 返回值:delete 操作后返回删除记录数,而 truncate...tb1 from tb1 m where id in (select id from tb2); 用法总结 希望删除结构,用 drop; 希望保留结构,但要删除所有记录, 用 truncate;...希望保留结构,但要删除部分记录, 用 delete。

3.7K20
领券