相关疑难解决方法(0)

主键是否在MySQL中自动编入索引?

您是否需要显式创建索引,还是在定义主键时是隐式的?MyISAM和InnoDB的答案是否相同?

mysql database indexing key

237
推荐指数
8
解决办法
8万
查看次数

主键和外键的索引

我有一个用GUI工具创建的数据库,我注意到似乎是KEY(aka INDEX)定义的不一致使用:

CREATE TABLE `foo_bar` (
  `foo_id` int(10) unsigned NOT NULL,
  `bar_id` int(10) unsigned NOT NULL,
  PRIMARY KEY (`foo_id`, `bar_id`),
  KEY `foo_bar_fk2` (`bar_id`), -- <== ???
  CONSTRAINT `foo_bar_fk1` FOREIGN KEY (`foo_id`) REFERENCES `foo` (`foo_id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `foo_bar_fk2` FOREIGN KEY (`bar_id`) REFERENCES `bar` (`bar_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci COMMENT='Links between Foo and Bar';
Run Code Online (Sandbox Code Playgroud)

我有关于索引的以下问题:

  1. 是否有必要明确定义主键和外键的索引?
  2. 如果不是,你真的得到两个索引(性能较差)吗?
  3. 它与InnoDB和MyISAM(外键除外)有什么不同?

mysql

2
推荐指数
1
解决办法
6016
查看次数

标签 统计

mysql ×2

database ×1

indexing ×1

key ×1