Можно ли добавить дополнительные столбцы к уже существующему ключу индекса?

#mysql #indexing

Вопрос:

Я создал следующую таблицу —

 SHOW CREATE TABLE fruits;

| fruits | CREATE TABLE `fruits` (
  `id` tinyint unsigned NOT NULL AUTO_INCREMENT,
  `column1` text,
  `column2` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
 

Здесь я могу создать FULLTEXT ключевые ft_col охватывающие столбцы column1 и column2

 ALTER TABLE fruits
    -> ADD FULLTEXT ft_col (column1, column2);
 

Мой вопрос в том, если я забуду включить column2 в свой запрос и вместо этого по ошибке сделаю —

 ALTER TABLE fruits
    -> ADD FULLTEXT ft_col (column1);
 

Итак, теперь есть способ добавить ключ индекса ft_col column2 ?

Или мне нужно удалить ключ ft_col и воссоздать его следующим образом —

 ALTER TABLE fruits
    -> DROP INDEX ft_col;
 
 ALTER TABLE fruits
    -> ADD FULLTEXT ft_col (column1, column2);
 

Комментарии:

1. Что случилось, когда ты попробовал это сделать?

2. @user207421 Я не знаю синтаксиса, как это попробовать?

Ответ №1:

Ваш синтаксис 2-Alter выглядит хорошо (без -> ). Это тоже должно сработать:

 ALTER TABLE fruits
   DROP INDEX ft_col,
   ADD FULLTEXT ft_col (column1, column2);
 

Вы не можете сделать, как следует из названия, «добавить столбец в существующий индекс».

Там термины «индекс» и «ключ» в основном взаимозаменяемы.

Комментарии:

1. Я скопировал код с моего терминала Ubuntu, в терминале -> автоматически генерируется в начале каждой строки. Спасибо вам за ответ.