Я создал две таблицы, в которых есть одно отношение.Mysql Индексация не работает
команды: -
CREATE TABLE TEAM(
ID INT(5) NOT NULL AUTO_INCREMENT,
NAME VARCHAR(6) NOT NULL,
PRIMARY KEY(ID)
)ENGINE=INNODB;
Член: -
CREATE TABLE MEMBER (
ID INT(5) NOT NULL AUTO_INCREMENT,
NAME VARCHAR(6) NOT NULL,
TEAM_ID INT(5) NOT NULL,
PRIMARY KEY (ID),
KEY TEAM_ID (TEAM_ID),
CONSTRAINT MEMBER_ibfk_1 FOREIGN KEY (TEAM_ID) REFERENCES TEAM (ID)
) ENGINE=InnoDB
Одна команда может иметь много членов.
данных внутри оба таблиц: -
команда Таблица
ID NAME
1 TEAM 1
2 TEAM 2
Member Table:-
ID NAME TEAM_ID
1 M1 1
2 M2 1
3 M3 1
4 M4 1
5 M5 1
6 M6 1
7 M7 1
8 M8 1
9 M9 2
10 M10 2
11 M11 2
12 M12 2
команда 1, имеющая 8 членов команды & 2, имеющая 4 членов.
Теперь я выполняю ниже запрос соединения, чтобы получить команду &.
SELECT * FROM TEAM JOIN MEMBER ON TEAM.ID = MEMBER.TEAM_ID WHERE TEAM.ID = 1
Когда я объясняю план запроса, я становлюсь ниже вывода.
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE TEAM const PRIMARY PRIMARY 4 const 1 \N
1 SIMPLE MEMBER ALL TEAM_ID \N \N \N 12 Using where
Я уже указал индекс на внешний ключ, но все же mysql сканирует все строки таблицы элементов? Почему такое?
Я использую версию mysql версии 5.6.12.
Пожалуйста, помогите.
Добавили одну команду и член, а затем попытались извлечь недавно добавленный элемент, тогда проверяется только один, но для команды 1 он все еще сканирует все строки таблицы. –
Я вставил больше записей в таблицу и начал сканирование соответствующей строки, а не всей строки. Есть ли у вас какая-либо ссылка на этот ответ? –
Вам следует искать мощность индекса. Одним из источников является https://webmonkeyuk.wordpress.com/2010/09/27/what-makes-a-good-mysql-index-part-2-cardinality/ –