【发布时间】:2020-01-29 22:36:45
【问题描述】:
使用 MySQL。我有 2 个基本表儿童和组。两者都是直截了当的。孩子:身份证、名字、姓氏。组:id,名称。一个孩子可以在 0 到多个组中。一个组可以包含 0 到多个孩子。这在第三个表中处理:子组。我已为子项和组添加了外键。
CREATE TABLE childgroups
(
childId INT,
groupId INT
);
ALTER TABLE childgroups
ADD FOREIGN KEY (fk_child) REFERENCES children(id);
ALTER TABLE childgroups
ADD FOREIGN KEY (fk_group) REFERENCES groups(id);
由于没有自动索引外键,我想在 childgroups 表上创建索引。
我将在这张桌子上使用如下语句:
SELECT childId
FROM childgroups
WHERE groupId = 123;
SELECT groupId
FROM childgroups
WHERE childId = 1366;
SELECT children.firstname, children.lastname
FROM children, childgroups, groups
WHERE groups.name = "Lions";
仅在 childId 和/或 groupId 上定义一个索引就足够了吗?
或者我是否也指定一个组合索引,例如:
CREATE INDEX childgroups_index ON childgroups (childid);
CREATE INDEX childgroups_index ON childgroups (groupid);
CREATE INDEX childgroups_index ON childgroups (childid, grouppid);
【问题讨论】:
-
索引是高度特定于供应商的 - 所以请添加一个标签来指定您使用的是
mysql、postgresql、sql-server、oracle还是db2- 或完全不同的东西。
标签: mysql performance indexing foreign-keys