这篇文章是我从淘宝的一个PPT文档中整理的,就不好意思的定为原创吧,截图也挺麻烦的,呵呵
CREATE TABLE `a` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,`message_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`msg` varchar(1024) DEFAULT NULL,
`gmt_create` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`,`message_id`),
KEY `idx_gmt_create` (`gmt_create`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
CREATE TABLE `b` (
`user_id` int(11) NOT NULL,
`message_id` int(11) NOT NULL,
`msg` varchar(1024) DEFAULT NULL,
`gmt_create` datetime NOT NULL,
PRIMARY KEY (`user_id`,`message_id`),
KEY `idx_gmt_create` (`gmt_create`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
大多数互联网业务(用户,消息),都可以选择a或者b来满足业务需求,但a表和b表有何区别?
本文对比了两个数据库表的设计:表A采用自增ID作为主键,包含用户ID和消息ID;表B则以用户ID和消息ID作为联合主键。两者在数据冗余、查询效率及维护上各有特点,适用于不同场景。
549

被折叠的 条评论
为什么被折叠?



