|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
MySQL的低成本来自于其简单性吗?它的普及性是由于其低成本吗?其实,在MySQL的最“好”与最“不好”的功能之间没有明显的分界线,但它们组合在一起就形成了一副让我们欣赏的作品。备注
与DELETE语句比拟,TRUNCATETABLE具有以下长处:
所用的事件日记空间较少。
DELETE语句每次删除一行,并在事件日记中为所删除的每行纪录一个条目。TRUNCATETABLE经由过程开释用于存储表数据的数据页来删除数据,而且在事件日记中只纪录页开释。
利用的锁一般较少。
当利用行锁实行DELETE语句时,将锁定表中各行以便删除。TRUNCATETABLE一直锁定表和页,而不是锁定各行。
表中将毫无破例地不留下任何页。
实行DELETE语句后,表仍会包括空页。比方,必需最少利用一个排他(LCK_M_X)表锁,才干开释堆中的空表。假如实行删除操纵时没有利用表锁,表(堆)中将包括很多空页。关于索引,删除操纵会留下一些空页,只管这些页会经由过程背景扫除历程敏捷开释。
TRUNCATETABLE删除表中的一切行,但表布局及其列、束缚、索引等坚持稳定。若要删除表界说及其数据,请利用DROPTABLE语句。
假如表包括标识列,该列的计数重视置为该列界说的种子值。假如不决义种子,则利用默许值1。若要保存标识计数器,请利用DELETE。
限定
不克不及对以下表利用TRUNCATETABLE:
由FOREIGNKEY束缚援用的表。
介入索引视图的表。
经由过程利用事件复制或兼并复制公布的表。
关于具有以上一个或多个特性的表,请利用DELETE语句。
TRUNCATETABLE不克不及激活触发器,由于该操纵不纪录各个行删除。有关具体信息,请参阅CREATETRIGGER(Transact-SQL)。有的时候,一些缺失的功能可以通过别的办法来实现,例如,在MySQL4.1以前,你可以通过使用join方法来替代子查询的功能。在MySQL5.0中,大多数关系型数据库所要求的功能已经都具备。 |
|