繁体   English   中英

是否可以为主键和外键创建一个索引?

[英]Is it possible to create one index for both primary and foreign key?

假设我们有两个表AB ,它们之间是一对一的关系。

CREATE TABLE IF NOT EXISTS A 
(
    ID INT UNSIGNED NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY (ID)
);

CREATE TABLE IF NOT EXISTS B 
(
    ID INT UNSIGNED NOT NULL,
    PRIMARY KEY (ID),
    FOREIGN KEY (ID) REFERENCES A(ID)
        ON UPDATE CASCADE ON DELETE CASCADE
);

B.ID键将用作A不知道的表中的外键。 当从A删除行时,也会从链接到B的其他表中删除。 正如我们在B中看到的,一列同时是主键和外键。 据我所知,键使用索引。 那么,是否可以让这两个键使用相同的索引呢? 它依赖于 RDBMS 吗? 还是我的理解有问题?

据我所知 [foreign] 键使用索引

这是错误的。 我猜你对数据库的经验仅限于 MySQL/MariaDB。 这是两个数据库,其中外键定义确实在引用表上创建了索引。

在大多数数据库中,外键定义不会在引用表上创建索引。 另一个区别是大多数数据库(我也很确定标准)要求引用的键是主键或唯一键。 在这种情况下,这不会影响您,但这是该领域 MySQL 中标准的另一个偏差。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM