今天看到SQL语句
alter table TB_1 drop primary key;
drop table if exists TB_1;
感觉有些多此一举,删除表的时候,主键难道不会自动删除吗?
今天看到SQL语句
alter table TB_1 drop primary key;
drop table if exists TB_1;
感觉有些多此一举,删除表的时候,主键难道不会自动删除吗?
收起
当前问题酬金
¥ 0 (可追加 ¥500)
支付方式
扫码支付
这个问题需要你真的去了解一下数据库的架构,以我了解的 MySQL为例:
主键的意思实际上并不是体现在表上,1、主键是一种约束,就是唯一的标识 2、主键在表中实际体现与其他的列没有太多的区别 3、主键的用处实际上是通过B+树的索引来提高查找速度,举个例子,现在我新建了一个表,定义了一个主键,实际上,现在相当于在数据库的 B+ 树种添加了一个节点类型,然后往表中添加数据记录时,是按照主键的相对顺序添加的,这才是主键的用处。查询也较快。 主键 与 索引
然后回到你的问题,删除表后,所有的数据都删除了,但是主键创建的这个索引还是在 B+ 树上面的,所以这个索引的B+树叶需要被删除
存的地方是不一样的,比如索引是 在索引页 数据在数据页(B+树的叶子结点存放了对应地址)
所以删除表,只是所有的数据页,索引页仍然存在,如果不删除,首先会占用内存,至于其他问题我还不清楚,可能会有相同索引再次创建的冲突问题。
解决问题请采纳。
然后我最近也在学 MySQL,你可以看下我博客的内容
报告相同问题?