要在C1,C2两个字段建立复合所用,规则有:如果C1字段使用更频繁一些,那么复合索引的顺序应该是(C1,C2),可以使Oracle更容易用上该索引。

如果C1字段只有(1,2,3)三个离散值,C2字段具有成千上万个离散值,则复合索引的顺序应该为(C1,C2),这样做目的是如果在SQL语句的条件中没有用上C1字段时,使Oracle可以走跳跃式索引扫描

PRODUCTKEY比USERGROUPID用的更频繁,则PRODUCTKEY应该放前面

USERGROUPID只有很少的离散值,当前表里面只有1个,则USERGROUPID应该放前面

这两者好像矛盾了?如下,PRODUCTKEY放前面的执行计划更优一些

索引(USERGROUPID, PRODUCTKEY)

SQL> select USERGROUPID from sysdb.SPY_T_GRPTARIFF where USERGROUPID != -1 and USERGROUPID != -2 and PRODUCTKEY = 2000101002;

no rows selected

Elapsed: 00:00:00.02

Execution Plan

----------------------------------------------------------

Plan hash value: 3899166571

--------------------------------------------------------------------------------------------

| Id  | Operation            | Name                | Rows  | Bytes | Cost (%CPU)| Time     |

--------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT     |                     |     2 |    52 |    69   (0)| 00:00:01 |

|*  1 |  INDEX FAST FULL SCAN| PK_SPY_T_GRPTARIFF |     2 |    52 |    69   (0)| 00:00:01 |

--------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

1 - filter("PRODUCTKEY"=2000101002 AND "USERGROUPID"<>(-1) AND  ——怎么过滤还走索引呢?              "USERGROUPID"<>(-2))

索引(PRODUCTKEY, USERGROUPID)

Execution Plan

----------------------------------------------------------

Plan hash value: 1177836263

----------------------------------------------------------------------------------------

| Id  | Operation        | Name                | Rows  | Bytes | Cost (%CPU)| Time     |

----------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT |                     |     2 |    52 |     2   (0)| 00:00:01 |

|*  1 |  INDEX RANGE SCAN| PK_SPY_T_GRPTARIFF |     2 |    52 |     2   (0)| 00:00:01 |

----------------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

1 - access("PRODUCTKEY"=2000101002)

filter("USERGROUPID"<>(-1) AND "USERGROUPID"<>(-2))

oracle复合字段,复合索引 选择频繁的字段,还是选择选择性低的字段 放在前面?...相关推荐

  1. Python之pandas:对dataframe数据的索引简介、应用大全(输出索引/重命名索引列/字段去重/设置复合索引/根据列名获取对应索引)、指定某字段为索引列等详细攻略

    Python之pandas:对dataframe数据的输出索引.重命名索引列/字段去重/设置复合索引/根据列名获取对应索引.指定某字段为索引列等详细攻略 目录 对pandas中dataframe数据中 ...

  2. oracle联合主键 索引,关于复合主键查询时使用索引研究

    当数据库创建表时,每个表只能有一个主键,但是如果想让多个列都成为主键时,就要用到复合主键. 一.主键唯一约束 我们知道当某列为主键时,Oracle会自动将此列创建唯一约束.也就是说不允许有相同的值出现 ...

  3. 复合非聚集索引里列的顺序的重要性

    当我谈论索引时,大家经常会问我在复合非聚集索引里,列的顺序是否重要?简单来说:"看情况".我们来具体看下为啥"看情况"-- 单例查找(Singleton Loo ...

  4. oracle_sqlserver和mysql获取表外键的方法_mysql、sqlserver、oracle三种数据库维护索引、外键、字段语法总结...

    mysql.sqlserver.oracle三种数据库维护索引.外键.字段语法总结 1.     MYSQL数据库 1)    创建索引 CREATE INDEX index_name ON tabl ...

  5. Oracle多个字段联合索引保证唯一性

    今天在开发过程中遇到了需要两个字段联合保证唯一性,所以查阅了一些资料和博客,梳理一下以便之后用到!!! 首先,你要搞明白什么是唯一索引和唯一约束,其次它们之间的区别是什么? 前提 二者的定义  唯一索 ...

  6. access建立两个字段唯一索引_数据库索引原理及优化

    微信公众号:云计算通俗讲义 持续输出技术干货,欢迎关注! 通过本文你将了解: 概述 分类 索引底层实现原理 基本操作 索引失效 索引优化 01 概述 索引是帮助MySQL高效获取数据的排好序的数据结构 ...

  7. mysql,oracle数据库优化之索引

    mysql,oracle数据库优化之索引,分库分表,表分区,本地索引,全局索引 数据库引擎 数据库索引 索引类型 主键索引 唯一索引 普通索引 全文索引 位图索引(oracle数据库才有) 在哪些列上 ...

  8. oracle创建表联合索引,Oracle创建索引的基本规则

    创建索引的基本规则 一.B-Tree索引 1. 选择索引字段的原则: 在WHERE子句中最频繁使用的字段 联接语句中的联接字段 选择高选择性的字段(如果很少的字段拥有相同值,即有很多独特值,则选择性很 ...

  9. oracle正确使用索引,通过案例学调优之--Oracle中null使用索引

    通过案例学调优之--Oracle中null使用索引 默认情况下,Oracle数据库,null在Index上是不被存储的,当在索引列以"is null"的方式访问时,无法使用索引:本 ...

最新文章

  1. python在word中的应用_不能在worddoc中使用docx python应用表样式
  2. DataGrid连接Access的快速分页法(2)——SQL语句的选用(升序与降序)
  3. ReDim Preserve 的用途
  4. Oracle 查看表空间的大小及使用情况sql语句
  5. 约瑟夫环问题(带密码)
  6. 使用BeetleX网关部署第三方Web服务
  7. 关情纸尾-----Quartz2D-绘制富文本,绘制图片.
  8. spring配置日志
  9. Bailian2748 全排列【全排列】(POJ NOI0202-1750)
  10. java中src_java中garadle工程没有src问题
  11. opencv 阈值处理(python)
  12. 云上PDF怎么删除页眉页脚_word页眉页脚删除不了?教你几招轻松搞定
  13. fastadmin中selectpage条件wherein添加
  14. 科学研究设计三:抽样
  15. [UE4][Blueprint]虚幻4实现照相机拍照功能
  16. moto XT316 刷机+ROOT权限获取
  17. 苹果手机上运行python_手机上运行Python
  18. 邓仲祥:用甘肃地名命名的和政化石标本
  19. 2021年山东省青少年人工智能培训
  20. springboot毕设项目会议室预约管理系统kh090(java+VUE+Mybatis+Maven+Mysql)

热门文章

  1. 为什么linux桌面很刺眼,屏幕实在太亮了,眼睛都快瞎了,真心试了各种方法无效后才来问....
  2. pg 事务 存储过程_PgpoolII实现数据分区存储及性能分析
  3. linux加密文件_如何在Linux上使用Gocryptfs加密文件
  4. bash 别名_必不可少的Bash别名
  5. 南亚三大半岛_南亚最大的维基百科聚会开始
  6. MySql | 为什么大家都在说 Select * 效率低
  7. 数组实例的find() 和 findIndex()方法
  8. 计算机太卡了怎么解决,电脑太慢太卡怎么办,电脑太慢太卡解决方法
  9. java exception e抛异常_Java-------异常处理try{}catch(){Exception e}finally{}
  10. python捕获所有异常状态_如何在scrapy中捕获并处理各种异常