Удаление с использованием индексированного поля медленно в MySQL - PullRequest
0 голосов
/ 06 мая 2019

У меня есть две таблицы РОДИТЕЛЯ и РЕБЕНКА.РОДИТЕЛЬ имеет отношения один к многим с ребенкомТаблица PARENT имеет 300000, а CHILD 1500000 строк соответственно.Строка с некоторым идентификатором вставляется и удаляется часто, и удаление занимает время приблизительно 20 секунд.И План выполнения удаления в таблице CHILD показывает сканирование всей таблицы.Почему удаление в индексированном поле занимает много времени?

ОБНОВЛЕНИЕ - 1

Схема таблицы родителя и потомка

show create table parent;

| Table  | Create Table                                                                                                                                                                                            | parent | CREATE TABLE `parent` (
  `id` bigint(20) NOT NULL,
  `name` varchar(500) COLLATE latin1_general_cs DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_cs |
show create table child;

| Table | Create Table                                                                                                                                                                                                                                                                                             | child | CREATE TABLE `child` (
  `id` bigint(20) NOT NULL,
  `value` varchar(2000) COLLATE latin1_general_cs DEFAULT NULL,
  KEY `child_cons` (`id`),
  CONSTRAINT `child_cons` FOREIGN KEY (`id`) REFERENCES `parent` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_cs |

ОБНОВЛЕНИЕ - 2

Оператор удаленияиспользуется

delete from child where id=1;

План выполнения

explain delete from child where id=1; 

| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows    | Extra       |

|  1 | SIMPLE      | child | ALL  | child_cons    | NULL | NULL    | NULL | 1350398 | Using where |

1 строка в наборе (0,00 с)

ОБНОВЛЕНИЕ - 3

Дочерняя таблица содержит только 5строки для id = 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...