暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB T ALTER INDEX

墨天轮 2019-10-12
389

ALTER INDEX

功能描述

改变一个现有索引的定义。

注意事项

  • 用户更改当前用户的索引,不需要额外授予权限。如果更改其他用户的索引,用户需要被授予ALTER ANY INDEX系统权限,普通用户不可以修改系统用户对象。
  • 索引名必须存在,否则报错。
  • 数据库重启回滚期间不支持该操作。

语法格式

ALTER INDEX [ schema_name. ]index_name { rebuild_clauses | rename_clauses }

参数说明

  • [schema_name.]index_name

    待重建的索引名。

  • rebuild_clauses
    • REBUILD ONLINE

      在线创建或重建索引。这个功能的主要作用是在创建和重建索引过程中,大幅度减少对表加排他锁的时间,从而不阻塞在线业务的运行。

    • REBUILD TABLESPACE tablespace_name

      复制索引数据到其他表空间。

  • rename_clauses
    • RENAME TO [schema_name.] index_name_new

      待重命名的索引名。

示例

  • 在普通表posts上在线重建及重命名索引。
    --删除表posts。 DROP TABLE IF EXISTS posts;
    --创建表posts。 CREATE TABLE posts(post_id CHAR(2) NOT NULL, post_name CHAR(6) PRIMARY KEY, basic_wage INT, basic_bonus INT);
    --删除索引idx_posts。 DROP INDEX IF EXISTS idx_posts;
    --创建索引idx_posts。 CREATE INDEX idx_posts ON posts(post_id ASC, post_name) ONLINE;
    --在线重建索引。 ALTER INDEX idx_posts REBUILD ONLINE;
    --重命名索引。 ALTER INDEX idx_posts RENAME TO idx_posts_temp;
  • 在分区表education上在线重建及重命名分区索引。
    --删除表education。 DROP TABLE IF EXISTS education;
    --创建分区表education。 CREATE TABLE education(staff_id INT NOT NULL, higest_degree CHAR(8), graduate_school VARCHAR(64), graduate_date DATETIME, education_note VARCHAR(70)) PARTITION BY LIST(higest_degree) ( PARTITION doctor VALUES ('DOCTOR'), PARTITION master VALUES ('MASTER'), PARTITION undergraduate VALUES ('SCHOLAR') );
    --向分区表education中插入记录1。 INSERT INTO education(staff_id,higest_degree,graduate_school,graduate_date,education_note) VALUES(10,'DOCTOR','Xidian University','2017-07-06 12:00:00','211'); --向分区表education中插入记录2。 INSERT INTO education(staff_id,higest_degree,graduate_school,graduate_date,education_note) VALUES(11,'DOCTOR','Northwest A&F University','2017-07-06 12:00:00','211&985'); --向分区表education中插入记录3。 INSERT INTO education(staff_id,higest_degree,graduate_school,graduate_date,education_note) VALUES(12,'MASTER','Northwestern Polytechnical University','2017-07-06 12:00:00','211&985'); --向分区表education中插入记录4。 INSERT INTO education(staff_id,higest_degree,graduate_school,graduate_date,education_note) VALUES(15,'SCHOLAR','Xi’an University of Architecture and Technology','2017-07-06 12:00:00','NOT 211 OR 985'); --向分区表education中插入记录5。 INSERT INTO education(staff_id,higest_degree,graduate_school,graduate_date,education_note) VALUES(18,'MASTER','Xi’an University of Technology','2017-07-06 12:00:00','not 211 or 985'); --向分区表education中插入记录6。 INSERT INTO education(staff_id,higest_degree,graduate_school,graduate_date,education_note) VALUES(20,'SCHOLAR','Capital Normal University','2017-07-06 12:00:00','211和985'); COMMIT;
    --删除索引idx_training。 DROP INDEX IF EXISTS idx_training;
    --创建分区索引。 CREATE INDEX idx_training ON education(staff_id ASC, higest_degree) LOCAL (PARTITION doctor, PARTITION master, PARTITION undergraduate);
    --重建索引。 ALTER INDEX idx_training REBUILD ONLINE;
    --重命名分区索引。 ALTER INDEX idx_training RENAME TO idx_training_temp;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论