您的位置:首页 > 产品设计 > UI/UE

mysql中key 、primary key 、unique key 与index区别

2017-03-28 10:59 375 查看
CREATE TABLE pre_forum_post (
pid int(10) unsigned NOT NULL COMMENT '帖子id',
fid mediumint(8) unsigned NOT NULL default '0' COMMENT '论坛id',
tid mediumint(8) unsigned NOT NULL default '0' COMMENT '主题id',
`first` tinyint(1) NOT NULL default '0' COMMENT '是否是首贴',
author varchar(15) NOT NULL default COMMENT '作者姓名',
authorid mediumint(8) unsigned NOT NULL default '0' COMMENT '作者id',
`subject` varchar(80) NOT NULL default COMMENT '标题',
dateline int(10) unsigned NOT NULL default '0' COMMENT '发表时间',
message mediumtext NOT NULL COMMENT '消息',
useip varchar(15) NOT NULL default COMMENT '发帖者IP',
invisible tinyint(1) NOT NULL default '0' COMMENT '是否通过审核',
anonymous tinyint(1) NOT NULL default '0' COMMENT '是否匿名',
usesig tinyint(1) NOT NULL default '0' COMMENT '是否启用签名',
htmlon tinyint(1) NOT NULL default '0' COMMENT '是否允许HTML',
bbcodeoff tinyint(1) NOT NULL default '0' COMMENT '是否关闭BBCODE',
smileyoff tinyint(1) NOT NULL default '0' COMMENT '是否关闭表情',
parseurloff tinyint(1) NOT NULL default '0' COMMENT '是否允许粘贴URL',
attachment tinyint(1) NOT NULL default '0' COMMENT '附件',
rate smallint(6) NOT NULL default '0' COMMENT '评分分数',
ratetimes tinyint(3) unsigned NOT NULL default '0' COMMENT '评分次数',
`status` int(10) NOT NULL default '0' COMMENT '帖子状态',
tags varchar(255) NOT NULL default '0' COMMENT '新增字段,用于存放tag',
`comment` tinyint(1) NOT NULL default '0' COMMENT '是否存在点评',
replycredit int(10) NOT NULL default '0' COMMENT '回帖获得积分记录',
`position` int(8) unsigned NOT NULL auto_increment COMMENT '帖子位置信息',
PRIMARY KEY (tid, `position`),//就是这里
KEY fid (fid),
KEY authorid (authorid,invisible),
KEY dateline (dateline),
KEY invisible (invisible),
KEY displayorder (tid,invisible,dateline),
KEY `first` (tid,`first`),
UNIQUE KEY pid (pid)
) ENGINE=MyISAM COMMENT='帖子表';


unique Key是唯一键,而Primary key是主键
Primary key 与Unique Key都是唯一性约束。但二者有很大的区别:
1、Primary key的1个或多个列 必须为NOT NULL,如果列为NULL,在增加PRIMARY KEY时,列自动更改为NOT NULL。而UNIQUE KEY 对列没有此要求。
2、一个表只能有一个PRIMARY KEY,但可以有多个UNIQUE KEY。

mysql中key 、primary key 、unique key 与index区别

http://www.jb51.net/article/93981.htm
http://zccst.iteye.com/blog/1697043
总结:
Key是索引约束,对表中字段进行约束索引的,都是通过primary foreign unique等创建的。常见有foreign key,外键关联用的。

KEY forum (status,type,displayorder) # 是多列索引(键)
KEY tid (tid) # 是单列索引(键)。

如建表时: KEY forum (status,type,displayorder)
select * from table group by status,type,displayorder 是否就自动用上了此索引,
而当 select * from table group by status 此索引有用吗?

key的用途:主要是用来加快查询速度的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: