局部索引和全局索引

【 使用环境 】 测试环境
【 OB or 其他组件 】Observer
【 使用版本 】
【问题描述】关于创建索引时的默认行为,我看在OB3版本如果不指定local或者global关键字,默认是创建local索引,但是到了OB4后,默认创建的是global索引,我想知道为啥发生这种变化。

【附件】


文档这里写的不正确,4.x默认还是local索引的,我反馈下文档同学,感谢。

2 个赞

那这个问题,到底解决了吗?文档中的内容是正确的?还是错误的?

官网文档写的不够清楚。

如果在创建索引时不加 global 或者 local 关键字,但是索引后面有分区信息的话,会被默认当作 global index;如果索引后面没有分区信息的话,会被默认当作 local index。详见:https://oceanbase.yuque.com/org-wiki-obtech-vh7w9r/notes/kfl7ceu8asd0ssrw

我理解并没有发生这种变化,应该就是文档有个疏漏而已。可以直接在官网文档那里纠错。

没有分区的话,默认就没有分区索引和本地索引这个区分了吧

没有分区索引这个概念,上面说的都是本地索引和全局索引。

本地索引是分区方式和主表保持一致的索引,全局索引是分区方式可以自己定义不需要和主表保持一致的索引。可以看下:https://oceanbase.yuque.com/org-wiki-obtech-vh7w9r/notes/kfl7ceu8asd0ssrw

你的意思是主表没有分区(或者叫只有一个分区)的话,能不能创建全局索引?是可以的,自己试一把就知道了~

-- 创建一张表
create table t1(
  c1 int primary key,
  c2 int
  );

-- 创建分区方式和主表不同的分区索引
create index g_idx on t1(c2) global
  partition by range(c2)
    (partition p0 values less than(100), 
     partition p1 values less than(200), 
     partition p2 values less than(300)
    );

可能和不同模式有关,文档不够细致,纠错一下吧:
Oracle 模式默认创建的是全局索引 ,MySQL 默认创建的是本地索引

没有用。纠错没有人看到;这个错误早就提出快一年了;



我验证过,323版本的确是local索引;

那到底是文档的错误?还是说产品的确有这样的变化呢?希望给个答复,或者在文档上小字注明下;