invisible.md 1.0 KB
Newer Older
M
Mars Liu 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
# 隐藏索引

Shop 表的部分字段如下:

```mysql
create table shop (
    id int primary key auto_increment,
    description varchar(8000),
    fulltext (description)
      -- ...
)
```

已知 description 字段上的全文索引名为 description。因为这个表已经很大,Joe 
想要删掉这个索引,但是他不确定是否有程序还在使用它,

Joe 应该怎么做?

## 答案

先执行

```mysql
alter table shop alter index description invisible ;
```

将索引隐藏,观察确认没有影响后再执行

```mysql
alter table shop drop index description;
```

删除。


## 选项

### A

先备份 shop 表,然后执行

```mysql
alter table shop drop index description;
```
删除,有问题的话从备份文件恢复。

### B

备份 shop ,然后删除重建,重建时去掉 description 相关的索引逻辑。

### C

先执行

```mysql
alter table shop alter index description invisible ;
```

将索引隐藏,确认后再执行

```mysql
alter table shop alter index description visible ;
```

恢复索引可见。