小智 121
显然,罗伯特发布的链接中指定的索引是自动创建的.
InnoDB需要外键和引用键的索引,以便外键检查可以快速,不需要表扫描.在引用表中,必须有一个索引,其中外键列以相同的顺序列为第一列.如果引用表不存在,则会自动在引用表上创建此索引.(这与一些旧版本形成对比,在旧版本中必须显式创建索引或者外键约束的创建将失败.)如果给定,则使用index_name,如前所述.
Rob*_*ble 21
是的,请参阅InnoDB和FOREIGN KEY约束.
Tho*_*röm 11
如果执行ALTER TABLE(而不是CREATE TABLE),则不会自动获取索引,至少根据文档(链接是针对5.1但是5.5的相同):
[...]使用ALTER TABLE向表中添加外键约束时,请记住首先创建所需的索引.
如前所述,它适用于 InnoDB。起初我觉得很奇怪许多其他(特别是 MS SQL 和 DB2)没有。只有在表行很少时,表空间扫描才比索引扫描更好 - 因此对于绝大多数情况,外键希望被索引。然后它有点打击我 - 这并不一定意味着它必须是一个独立的(一列)索引 - 它在 MySQL 的自动 FK 索引中。所以,这可能是 MS SQL、DB2(我不确定是否使用 Oracle)等将它留给 DBA 的原因;毕竟大表上的多个索引会导致性能和空间问题。
| 归档时间: | 
 | 
| 查看次数: | 80081 次 | 
| 最近记录: |