[英]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)
);
index
和foreign key
是两回事。
foreign key
表示meeting
不能具有未出现在room
的room_id
列中的room_id
值。
index
意味着您可以更有效地通过room_id
查询meetings
,而无需扫描整个表。
如果meeting
和meeting
room
相当大,并且您有多个组合它们的查询(通过联接或子查询),我将同时拥有index
和foreign key
。
外键和索引是完全不同的东西。
您添加外键以强制数据的完整性。 你说,room_id只允许来自room.room_id。 这是一个很好的财产,你应该尽可能地尝试使用它们。
您添加索引以告诉数据库您将如何搜索数据,以便它可以准备必要的数据结构以有效地执行此操作。 在这种情况下,一旦添加索引查询,在特定房间中搜索会议将会很快。
这两个概念实际上是完全无关的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.