【 使用环境 】 测试环境
【 OB or 其他组件 】Observer
【 使用版本 】
【问题描述】关于创建索引时的默认行为,我看在OB3版本如果不指定local
或者global
关键字,默认是创建local
索引,但是到了OB4后,默认创建的是global
索引,我想知道为啥发生这种变化。
【附件】
【 使用环境 】 测试环境
【 OB or 其他组件 】Observer
【 使用版本 】
【问题描述】关于创建索引时的默认行为,我看在OB3版本如果不指定local
或者global
关键字,默认是创建local
索引,但是到了OB4后,默认创建的是global
索引,我想知道为啥发生这种变化。
【附件】
文档这里写的不正确,4.x默认还是local索引的,我反馈下文档同学,感谢。
那这个问题,到底解决了吗?文档中的内容是正确的?还是错误的?
官网文档写的不够清楚。
如果在创建索引时不加 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 默认创建的是本地索引
没有用。纠错没有人看到;这个错误早就提出快一年了;