invisible.md 1.3 KB
Newer Older
M
Mars Liu 已提交
1 2 3 4
# 隐藏索引

Shop 表的部分字段如下:

fix bug  
张志晨 已提交
5
```sql
M
Mars Liu 已提交
6 7 8 9 10 11 12 13 14 15 16 17 18
create table shop (
    id int primary key auto_increment,
    description varchar(8000),
    fulltext (description)
      -- ...
)
```

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

Joe 应该怎么做?

M
Mars Liu 已提交
19 20
<hr/>

F
feilong 已提交
21
点击进入[MySQL实战练习环境](https://mydev.csdn.net/product/pod/new?image=cimg-centos7-skilltreemysql&connect=auto&create=auto&utm_source=skill){target="_blank"}。
F
feilong 已提交
22

F
feilong 已提交
23 24
* `show databases;` 列出所有数据库
* `show tables;` 列出所有表
M
Mars Liu 已提交
25

M
Mars Liu 已提交
26 27 28 29
## 答案

先执行

fix bug  
张志晨 已提交
30
```sql
31 32
alter table shop 
    alter index description invisible ;
M
Mars Liu 已提交
33 34 35 36
```

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

fix bug  
张志晨 已提交
37
```sql
38 39
alter table shop 
    drop index description;
M
Mars Liu 已提交
40 41 42 43 44 45 46 47 48 49 50
```

删除。


## 选项

### A

先备份 shop 表,然后执行

fix bug  
张志晨 已提交
51
```sql
52 53
alter table shop 
    drop index description;
M
Mars Liu 已提交
54 55 56 57 58 59 60 61 62 63 64
```
删除,有问题的话从备份文件恢复。

### B

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

### C

先执行

fix bug  
张志晨 已提交
65
```sql
66 67
alter table shop 
    alter index description invisible ;
M
Mars Liu 已提交
68 69 70 71
```

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

fix bug  
张志晨 已提交
72
```sql
73 74
alter table shop 
    alter index description visible ;
M
Mars Liu 已提交
75 76 77
```

恢复索引可见。