萌萌妈妈 发表于 2015-1-16 22:22:01

MYSQL教程之truncate,delete,drop的异同点

不管怎么样,市场的结果已经证明MySQL具有性价比高、灵活、MySQL学习教程广为使用和具有良好支持的特点。truncate,delete,drop的异同点
申明:本文摘自oracle手艺用户会商组

truncate,delete,drop的异同点
注重:这里说的delete是指不带where子句的delete语句

不异点:truncate和不带where子句的delete,和drop城市删除表内的数据
分歧点:
1.truncate和delete只删除数据不删除表的布局(界说)
drop语句将删除表的布局被依附的束缚(constrain),触发器(trigger),索引(index);依附于该表的存储历程/函数将保存,可是变成invalid形态.
2.delete语句是dml,这个操纵会放到rollbacksegement中,事件提交以后才失效;假如有响应的trigger,实行的时分将被触发.
truncate,drop是ddl,操纵当即失效,原数据不放到rollbacksegment中,不克不及回滚.操纵不触发trigger.
3.delete语句不影响表所占用的extent,高水线(highwatermark)坚持原地位不动
明显drop语句将表所占用的空间全体开释
truncate语句缺省情形下将空间开释到minextents个extent,除非利用reusestorage;truncate会将高水线复位(回到最入手下手).
4.速率,一样平常来讲:drop>truncate>delete
5.平安性:当心利用drop和truncate,特别没有备份的时分.不然哭都来不及
利用上,想删除部分数据行用delete,注重带上where子句.回滚段要充足年夜.
想删除表,固然用drop
想保存表而将一切数据删除.假如和事件有关,用truncate便可.假如和事件有关,大概想触发trigger,仍是用delete.
假如是收拾表外部的碎片,能够用truncate跟上reusestroage,再从头导进/拔出数据
MySQL对硬件的较低要求是其最大的优势之一,不过需要注意的是:内存越多越好,因为所有的重要数据存储都在内存中完成。

兰色精灵 发表于 2015-1-19 09:33:50

而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。

蒙在股里 发表于 2015-1-24 14:23:24

总感觉自己还是不会SQL

再现理想 发表于 2015-2-1 16:59:03

如果处理少量数据,比如几百条记录的数据,我不知道这两种情况哪个效率更高,如果处理大量数据呢?比如有表中有20万条记录.

分手快乐 发表于 2015-2-7 10:24:59

不过话说回来了,绝大多数的性能优化准则与对sqlserver存储的结构理解息息相关

乐观 发表于 2015-2-21 18:56:17

我个人认为就是孜孜不懈的学习

精灵巫婆 发表于 2015-3-6 21:05:09

SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)

不帅 发表于 2015-3-13 09:58:59

如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。

小妖女 发表于 2015-3-20 19:25:34

两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书
页: [1]
查看完整版本: MYSQL教程之truncate,delete,drop的异同点