-------------------------+
| user | CREATE TABLE user
(id
int(11) NOT NULL,name
varchar(50) default NULL,companyId
int(11) default NULL,
PRIMARY KEY (id
),
KEY company_user_id
(companyId
)
) ENGINE=InnoDB DEFAULT CHARSET=gbk |
上面的建表语句中,KEY company_user_id
(companyId
),这句话起什么作用?
和 index company_user_id
(companyId
)有什么区别?
这个回答感觉完全没有营养。
我的理解是这样的,不知道对不对:
一个是数据库逻辑层(KEY)的东西,一个是实现层(INDEX)的。
KEY有两个核心属性: 1 是 键约束 2 是索引
KEY的索引是通过INDEX来实现的。
实际使用中如果没有涉及字段间的约束,二者的作用是一样的。
key是主键,index是索引,两者都要求字段保持唯一性。key用于完整性约束,一张表的外键是另外一张表的主键。index可以提高改字段的查询效率。
show create table 命令可以看到表的key、index信息
如果只是key的话,就是普通索引。
mysql的key和index多少有点令人迷惑,单独的key和其它关键词结合的key(primary key)实际表示的意义是不同,这实际上考察对数据库体系结构的了解的。
key 是数据库的物理结构,处于模型层面的,它包含两层意义和作用,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的)。
index是数据库的物理结构,处于实现层面的,它只是辅助查询的。
······
参考自:MySQL key与index的区别 http://www.data.5helpyou.com/article392.html