MYSQL面试常见问题系列之delete和truncate及drop的区别
1.DELETE是逻辑操作,属于DML语句,TRUNCATE是物理操作,属于DDL语句。
2.DELETE支队用户数据进行逻辑删除,即只是在删除的行前面添加不可访问的标记,这样未来访问的时候就找不到这些数据了,但是这些数据依旧在表中,没有被删除出去。
TRUNCATE对表的元数据进行删除,元数据对应的所有用户数据和行数据统统失效,这些数据占用的空间将被回收重新利用,可以有效的降低表的空间利用率和解决碎片问题。
3.DELETE删除会更新你的索引,将索引上DELETE掉的数据对应位置的索引数据一并理删除。TRUNCATE直接重构索引,原索引失效。
4.TRUNCATE和DROP操作,TRUNCATE=DROP+CREATE,DROP操作后表彻底消失,元数据删除,用户数据重用。TRUNCATE后元数据重建,用户数据重用。