本章节提供DDL操作的在线支持详情,语法示例和使用说明。
- [索引操作]
- [主键操作]
- [列操作]
- [生成列操作]
- [外键操作]
- [表操作]
- [分区操作]
索引操作 #
下表提供了对索引操作的online DDL支持的概述。星号表示附加信息,例外,或者依赖。详情请查阅 语法和使用说明。
表 15.16 索引操作的Online DDL支持
| 操作 | 即时 | 就地 | 重建表 | 允许并发DML | 只修改元数据 |
|---|---|---|---|---|---|
| 创建或添加二级索引 | 否 | 是 | 否 | 是 | 否 |
| 删除索引 | 否 | 是 | 否 | 是 | 是 |
| 重命名索引 | 否 | 是 | 否 | 是 | 是 |
| 添加全文索引 | 否 | 是* | 否* | 否 | 否 |
| 添加控件索引 | 否 | 是 | 否 | 否 | 否 |
| 修改索引类型 | 是 | 是 | 否 | 是 | 是 |
语法和使用说明 #
创建或添加二级索引
create index name on table (col_list);alter table tbl_name add index name (col_list);在创建索引期间,对于读操作和写操作,表仍然可用。只有在所有访问表的事务完成之后,CREATE INDEX语句才会结束。这样,索引的初始状态就能反映表的最新内容。
添加二级索引时的Online DDL支持,意味着通过创建不带二级索引的表,然后在装载数据之后再添加二级索引,你可以加速创建和加载表以及相关索引的过程。
一个新添加的索引只包含在create index或alter table语句执行完成时已提交的的数据。它不会包含任何未提交的值,旧版本的值,或被标记为删除但是没有从旧索引上移除的值。
一些因素会影响性能,空间使用,或语义。想了解详情,请查阅章节Online DDL限制。
删除索引
drop index name on table;alter table tbl_name drop index name;在删除索引时,表对于读写操作仍然可用。只有在所有访问表的事务结束之后,drop index语句才会执行结束。索引,索引的初始状态反映了表的最新内容。
重命名索引
alter table tbl_name rename index old_index_name to new_index_name, ALGORITHM=INPLACE, LOCK=NONE;添加全文索引
create fulltext index name on table(column);如果没有用户自定义的FTS_DOC_ID列,添加第一个全文索引时会创建整张表。在创建更多的全网索引时就不会重建表了。
添加控件索引
CREATE TABLE geom (g GEOMETRY NOT NULL); ALTER TABLE geom ADD SPATIAL INDEX(g), ALGORITHM=INPLACE, LOCK=SHARED;修改索引类型(USING {BTREE | HASH})
ALTER TABLE tbl_name DROP INDEX i1, ADD INDEX i1(key_part,...) USING BTREE, ALGORITHM=INSTANT;