开发者社区> 问答> 正文

数据库建表,是否每一张表都应该设置主键呢?

问题是这样的,就是需要对一张表里的数据频繁的进行删除操作,比如有一张评论表,里面已经有一百多条记录了,里面有很多垃圾评论,假说我要删除主键id为30的这条记录,删除后主键为30 的这个id就空缺出来了,删除的越多空缺的也就越多,听以前不知道谁说这样空缺越多也会影响数据查询速度和操作速度,那么对于这种情况,是否应该对这张表设置主键呢,或者有没有更好的设计方案

展开
收起
好还啦 2017-09-08 10:04:49 4599 0
2 条回答
写回答
取消 提交回答
  • 主键是数据的唯一标识,必须要有,删除数据的行为是数据库本身的操作,数据库自身会有优化,不用考虑这个效率问题

    2019-07-17 21:34:20
    赞同 展开评论 打赏
  • 数据库设计合理,都应该有一个主键,一般数据库会使用主键来组织表行数据,其他索引只是存储了这个主键的索引位置,所以查询的时候如果用到主键查询排序应该更快(其他查询是二次查询)。可以考虑定期重建索引


    合理设计应该考虑使用主键,因为大部分数据库主键都是和表行一起存储,其他索引需要二次查找主键位置,才能找到数据,如果需要查询数据和排序,最好使用主键

    2019-07-17 21:34:20
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载