• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

主键及索引的有关问题

mysql 搞代码 7年前 (2018-05-31) 243次浏览 已收录 0个评论

主键及索引的问题
看yueliangdao0608的文章里面提到的东西,传送门:
http://blog.chinaunix.net/space.php?uid=259788&do=blog&id=2139293
create table category_part( 
cid int unsigned not null auto_increment,
cname varchar(64) not null,
parent_id int not null,
primary key (cid,parent_id))
partition by list(parent_id)(
partition p1 values in (1,2,3,6,9),
partition p2 values in (4,5,10,22,23),
partition p3 values in (7,8,11,12,13),
partition p4 values in (14,15,16,17,20),
partition p5 values in (18,19,21,24,25)
);
这里的主键设置的是(cid,parent_id),因为cid是auto_increment,所以他就是唯一的了。
问题就是:cid做为主键和(cid,parent_id)做为主键有什么区别?
是因为用(cid,parent_id)做为主键的话相当于有了两个索引吗?
以前在我的概念里主键更多的是起唯一标识的作用,没别的含义。
谢谢高人指点一番。

——解决方案——————–
create table category_part( 
cid int unsigned not null auto_increment,
cname varchar(64) not null,
parent_id int not null,
primary key (cid,parent_id))
partition by list(parent_id)(
partition p1 values in (1,2,3,6,9),
partition p2 values in (4,5,10,22,23),
partition p3 values in (7,8,11,12,13),
partition p4 values in (14,15,16,17,20),
partition p5 values in (18,19,21,24,25)
);
这里的主键设置的是(cid,parent_id),因为cid是auto_increment,所以他就是唯一的了。
问题就是:cid做为主键和(cid,parent_id)做为主键有什么区别?
是因为用(cid,parent_id)做为主键的话相当于有了两个索引吗?
以前在我的概念里主键更多的是起唯一标识的作用,没别的含义。
谢谢高人指点一番。

从这个表结构而言,这样创建主键是因为:parent_id字段是作为分区字段的作用;

分区字段有一个硬性要求:若是分区表有主键则为簇索引或无主键时有非空唯一则为簇索引的情况下,分区字段必须作为簇索引 或簇索引的一部分;

关于InnoDB引擎索引的问题可以查阅网站:www.mysqlops.com 上的资料,自己站内搜索下: innodb 主键选型
——解决方案——————–
参考手册中的例子。

引用

CREATE TABLE animals (
grp ENUM(‘fish’,’mammal’,’bird’) NOT NULL,
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (grp,id)
) ENGINE=MyISAM;

INSERT INTO animals (grp,name) VALUES
(‘mammal’,’dog’),(‘mammal’,’cat’),
(‘bird’,’penguin’),(‘fish’,’lax’),(‘mammal’,’whale’),
(‘bird’,’ostrich’);

SELECT * FROM animals ORDER BY grp,id;

Which returns:

+——–+—-+———+
| grp | id | name |
+——–+—-+———+
| fish | 1 | lax |
| mammal | 1 | dog |
| mammal | 2 | cat |
| mammal | 3 | whale |
| bird | 1 | penguin |
| bird | 2 | ostrich |
+——–+—-+———+


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:主键及索引的有关问题

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址