繁体   English   中英

我可以在MySQL中使用任何一个命令吗? INDEX和FOREIGN KEY

[英]Can I use either commands in MySQL? INDEX and FOREIGN KEY

所以我分配外键并想知道哪个更好用于索引或外键

这个:

CREATE TABLE meeting (
    meeting_id INT(11) NOT NULL PRIMARY KEY,
    room_id INT(11),
    name TINYTEXT,
    date DATE,
    FOREIGN KEY(room_id) REFERENCES room(room_id)
);

或者这一个:

CREATE TABLE meeting (
    meeting_id INT(11) NOT NULL PRIMARY KEY,
    room_id INT(11),
    name TINYTEXR,
    date DATE,
    INDEX(room_id)
);

indexforeign key是两回事。

foreign key表示meeting不能具有未出现在roomroom_id列中的room_id值。
index意味着您可以更有效地通过room_id查询meetings ,而无需扫描整个表。

如果meetingmeeting room相当大,并且您有多个组合它们的查询(通过联接或子查询),我将同时拥有indexforeign key

外键和索引是完全不同的东西。

您添加外键以强制数据的完整性。 你说,room_id只允许来自room.room_id。 这是一个很好的财产,你应该尽可能地尝试使用它们。

您添加索引以告诉数据库您将如何搜索数据,以便它可以准备必要的数据结构以有效地执行此操作。 在这种情况下,一旦添加索引查询,在特定房间中搜索会议将会很快。

这两个概念实际上是完全无关的。

暂无
暂无

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

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