什么情况下使用全局索引和本地索引
2013-12-10 08:56
344 查看
我举个 global 索引的例子
查询 条件 不走 分区键这个值
但是 我走另外一个where条件
而且选择性很高
假设索引高度为3
不跨越分区 扫描3个block +1个 data block
跨越分区 扫描 1000个 分区 *3 +1个data block
扫描要跨越 多个 分区你就建立 global
条件里不带上了分区键对应的列,对应的列就用GLOBAL
oracle会对主键自动创建全局索引
我 有一个查询
查询 条件 不走 分区键这个值
但是 我走另外一个where条件
总结就是
扫描要跨越 多个 分区
你就建立 global
global 索引是为了解决 跨越 分区扫描的用的
总结:
全局索引:
优点:通过索引检索,没有限定分区的谓词、或跨分区时,性能好点,
缺点:分区维护的时候麻烦,drop分区等维护会失效,dml的时候索引维护成本高,数据大了rebuild也难
local 索引:
优点:通过索引检索,有限定分区的谓词、不跨分区时,性能好,分区维护容易,dml的索引维护底,rebuild也方便。
缺点:通过索引检索,又没有限定分区的谓词、或跨分区时,性能不如全局索引
有分区裁剪的,那么其他列就建立分区索引
就是where 条件里带上了分区键,对应的列 就用LOCAL
没有分区裁剪的,那么列就建立global 索引
查询 条件 不走 分区键这个值
但是 我走另外一个where条件
而且选择性很高
假设索引高度为3
不跨越分区 扫描3个block +1个 data block
跨越分区 扫描 1000个 分区 *3 +1个data block
扫描要跨越 多个 分区你就建立 global
条件里不带上了分区键对应的列,对应的列就用GLOBAL
oracle会对主键自动创建全局索引
我 有一个查询
查询 条件 不走 分区键这个值
但是 我走另外一个where条件
总结就是
扫描要跨越 多个 分区
你就建立 global
global 索引是为了解决 跨越 分区扫描的用的
总结:
全局索引:
优点:通过索引检索,没有限定分区的谓词、或跨分区时,性能好点,
缺点:分区维护的时候麻烦,drop分区等维护会失效,dml的时候索引维护成本高,数据大了rebuild也难
local 索引:
优点:通过索引检索,有限定分区的谓词、不跨分区时,性能好,分区维护容易,dml的索引维护底,rebuild也方便。
缺点:通过索引检索,又没有限定分区的谓词、或跨分区时,性能不如全局索引
有分区裁剪的,那么其他列就建立分区索引
就是where 条件里带上了分区键,对应的列 就用LOCAL
没有分区裁剪的,那么列就建立global 索引
相关文章推荐
- 什么情况下使用全局索引和本地索引
- MYSQL 索引类型、什么情况下用不上索引、什么情况下不推荐使用索引
- 什么情况下使用聚集索引或非聚集索引
- mysql什么情况下不会使用索引
- 复合索引在什么情况下使用
- 数据库调优教程(八) 什么情况下不要使用索引
- 《Oracle编程艺术》学习笔记(31)-什么情况下适合使用B*树索引
- MYSQL 索引类型、什么情况下用不上索引、什么情况下不推荐使用索引
- 在什么情况下使用单件模式比全局变量好
- 数据库调优教程(八) 什么情况下不要使用索引
- MYSQL 索引类型、什么情况下用不上索引、什么情况下不推荐使用索引
- 数据库调优教程(八) 什么情况下不要使用索引
- python中必须使用global声明全局变量的情况
- 什么情况使用 weak 关键字,相比 assign 有什么不同?
- 简单说明什么是递归,什么情况下会使用递归,并写一个简单的递归程序。
- linux用什么命令可以查看内存使用的情况详细信息
- php各种编码集详解和在什么情况下进行使用
- [转载]什么情况下该使用变量延迟?
- @responsebody一般在什么情况下使用,他的好处与坏处
- 什么情况下有索引,但用不上?