从索引的角度考虑:
我知道主键也是唯一索引,只是它强制非空了。那么主键与非空唯一索引(对唯一索引的列设置非空)有什么区别?假设某字段,将其设置为非空和唯一索引,与将其设置为主键有何区别?create table t1(id1 int not null,id2 int,id3 int not null,unique key(id2),unique key(id3));
desc t1;
#id3自动成为主键。这说明非空唯一索引与主键本质上是相同的吗?
那么,又为什么为自动成为主键?
我知道主键也是唯一索引,只是它强制非空了。那么主键与非空唯一索引(对唯一索引的列设置非空)有什么区别?假设某字段,将其设置为非空和唯一索引,与将其设置为主键有何区别?create table t1(id1 int not null,id2 int,id3 int not null,unique key(id2),unique key(id3));
desc t1;
#id3自动成为主键。这说明非空唯一索引与主键本质上是相同的吗?
那么,又为什么为自动成为主键?
解决方案 »
- IN (...) ORDER BY rand() LIMIT 1 - 如何控制概率
- dbexpress连接mysql报“unalbe to load LIBMYSQL.dll”
- 请教linux 安装mysql问题
- [原创]使用postgreSQL搭建比lucene方便N倍的全文搜索 第一部分
- 请问如何书写SQL语句以实现如下功能?
- 面试题目:怎么去除表中的重复记录?
- LOAD DATA INFILE 如何跳过空行?
- find_in_set 的用法求解。查询结果有问题,不仅仅是没排序
- 小白请教 mysql如何写作业监听数据库的修改
- 关于join查询问题
- 查找出错。都一个星期了。晕死了#2006 - MySQL server has gone away根本解决不了
- 【向ACMAIN_CHM提问】MySQL数据库设计与优化
这个MYSQL的特色,因为从理论上和数据库设计原理,要求所有的表都必须有主键。
MYISAM中没有,只有INNODB中有。2、主键不允许空值,那唯一索引相关的列设置not null,不就一个意思了吗?
是的。主键=UNIQUE KEY + NOT NULL, 但一个表中只能有一个主键,但可以有多个唯一索引3、说到底,就想问明白,只考虑对查询效率的影响的话,是否存在设置某个列为主键比设置为唯一索引更好这么个说法,我指在使用MyISAM引擎中?
MYISAM中没有这个说法。但PK显然会比UK好一些,如果UK+NOT NULL,则效率上相同。