У меня есть таблица под названием customer_type
с полями (id, customer_type)
. Он состоит из 5 строк, каждая из которых описывает тип клиента.
У меня также есть таблица с именем quote
, которая использует customer_type_id
в качестве одного из столбцов внешнего ключа:
CREATE TABLE `quote` (
`id` int NOT NULL AUTO_INCREMENT,
`number` int NOT NULL,
`customer_type_id` tinyint(4) DEFAULT NULL,
`comments` text,
PRIMARY KEY (`id`),
KEY `fk_customer_type` (`customer_type_id`),
CONSTRAINT `fk_customer_type`
FOREIGN KEY (`customer_type_id`)
REFERENCES `customer_type` (`id`),
);
В таблице котировок есть и другие столбцы и индексы, всего 10 индексов. В последнее время операции INSERT в базу данных стали выполняться медленно, и одной из возможных причин может быть слишком много индексов.
И вот я хочу удалить некоторые, в том числе например, fk_customer_type
. Мощность этого индекса равна 5, тогда как мощность некоторых других индексов намного выше (например, 5000 или 20000).
Я не могу просто удалить индекс из-за ограничения внешнего ключа.
Вопрос
Оправдывает ли моя ситуация удаление этого внешнего ключа и соответствующего ограничения внешнего ключа? Где мои причины для удаления:
- уменьшите количество индексов в надежде улучшить производительность INSERT
- количество элементов «customer_type_id» очень низкое, поэтому производительность вряд ли пострадает.
Моими причинами против удаления могут быть:
- Я потеряю ссылочную целостность (ограничение внешнего ключа)
Есть ли какие-то конкретные недостатки, которые произойдут, если я удалю индекс? Стоит ли сохранять индекс только для того, чтобы сохранить ограничение индекса?