您需要显式地创建索引,还是在定义主键时隐式创建索引?MyISAM和InnoDB的答案一样吗?
当前回答
你不必显式地为主键创建索引…这是默认的。
其他回答
MyISAM和InnoDB的主键都隐式索引。可以通过对使用主键的查询使用EXPLAIN来验证这一点。
你不必显式地为主键创建索引…这是默认的。
主键总是被索引。对于MyISAM和InnoDB也是如此,对于所有支持索引的存储引擎也是如此。
主键总是自动索引且惟一。因此,注意不要创建冗余索引。
例如,如果您这样创建了一个表
CREATE TABLE mytable (foo INT NOT NULL PRIMARY KEY, bar INT NOT NULL, baz INT NOT NULL,
UNIQUE(foo), INDEX(foo)) ENGINE=InnoDB;
因为您想要索引主键并对其强制唯一性约束,所以实际上最终会在foo上创建三个索引!
根据http://dev.mysql.com/doc/refman/5.0/en/constraint-primary-key.html的说法,这似乎是隐含的
推荐文章
- 为什么在MySQL中文本列不能有一个默认值?
- 使用SQL查询查找最近的纬度/经度
- 模式、表和数据库之间的区别是什么?
- 如何停止mysqld
- 检查MySQL表是否存在而不使用“select from”语法?
- 从NOW() -1天选择记录
- 我看到VARCHAR(255)如此频繁地使用(而不是其他长度),有什么好的原因吗?
- 使用pgadmin连接到heroku数据库
- 从表中选择1是什么意思?
- Delete_all vs destroy_all
- 我如何移动一个redis数据库从一个服务器到另一个?
- 如何首次配置postgresql ?
- 数据库性能调优有哪些资源?
- 如何更改表的默认排序规则?
- 如何在PostgreSQL中自动更新时间戳