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
M
Mars Liu 已提交
31 32 33 34 35
alter table shop alter index description invisible ;
```

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

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

删除。


## 选项

### A

先备份 shop 表,然后执行

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

### B

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

### C

先执行

fix bug  
张志晨 已提交
62
```sql
M
Mars Liu 已提交
63 64 65 66 67
alter table shop alter index description invisible ;
```

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

fix bug  
张志晨 已提交
68
```sql
M
Mars Liu 已提交
69 70 71 72
alter table shop alter index description visible ;
```

恢复索引可见。