oracle复合字段,复合索引 选择频繁的字段,还是选择选择性低的字段 放在前面?...
要在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复合字段,复合索引 选择频繁的字段,还是选择选择性低的字段 放在前面?...相关推荐
- Python之pandas:对dataframe数据的索引简介、应用大全(输出索引/重命名索引列/字段去重/设置复合索引/根据列名获取对应索引)、指定某字段为索引列等详细攻略
Python之pandas:对dataframe数据的输出索引.重命名索引列/字段去重/设置复合索引/根据列名获取对应索引.指定某字段为索引列等详细攻略 目录 对pandas中dataframe数据中 ...
- oracle联合主键 索引,关于复合主键查询时使用索引研究
当数据库创建表时,每个表只能有一个主键,但是如果想让多个列都成为主键时,就要用到复合主键. 一.主键唯一约束 我们知道当某列为主键时,Oracle会自动将此列创建唯一约束.也就是说不允许有相同的值出现 ...
- 复合非聚集索引里列的顺序的重要性
当我谈论索引时,大家经常会问我在复合非聚集索引里,列的顺序是否重要?简单来说:"看情况".我们来具体看下为啥"看情况"-- 单例查找(Singleton Loo ...
- oracle_sqlserver和mysql获取表外键的方法_mysql、sqlserver、oracle三种数据库维护索引、外键、字段语法总结...
mysql.sqlserver.oracle三种数据库维护索引.外键.字段语法总结 1. MYSQL数据库 1) 创建索引 CREATE INDEX index_name ON tabl ...
- Oracle多个字段联合索引保证唯一性
今天在开发过程中遇到了需要两个字段联合保证唯一性,所以查阅了一些资料和博客,梳理一下以便之后用到!!! 首先,你要搞明白什么是唯一索引和唯一约束,其次它们之间的区别是什么? 前提 二者的定义 唯一索 ...
- access建立两个字段唯一索引_数据库索引原理及优化
微信公众号:云计算通俗讲义 持续输出技术干货,欢迎关注! 通过本文你将了解: 概述 分类 索引底层实现原理 基本操作 索引失效 索引优化 01 概述 索引是帮助MySQL高效获取数据的排好序的数据结构 ...
- mysql,oracle数据库优化之索引
mysql,oracle数据库优化之索引,分库分表,表分区,本地索引,全局索引 数据库引擎 数据库索引 索引类型 主键索引 唯一索引 普通索引 全文索引 位图索引(oracle数据库才有) 在哪些列上 ...
- oracle创建表联合索引,Oracle创建索引的基本规则
创建索引的基本规则 一.B-Tree索引 1. 选择索引字段的原则: 在WHERE子句中最频繁使用的字段 联接语句中的联接字段 选择高选择性的字段(如果很少的字段拥有相同值,即有很多独特值,则选择性很 ...
- oracle正确使用索引,通过案例学调优之--Oracle中null使用索引
通过案例学调优之--Oracle中null使用索引 默认情况下,Oracle数据库,null在Index上是不被存储的,当在索引列以"is null"的方式访问时,无法使用索引:本 ...
最新文章
- python在word中的应用_不能在worddoc中使用docx python应用表样式
- DataGrid连接Access的快速分页法(2)——SQL语句的选用(升序与降序)
- ReDim Preserve 的用途
- Oracle 查看表空间的大小及使用情况sql语句
- 约瑟夫环问题(带密码)
- 使用BeetleX网关部署第三方Web服务
- 关情纸尾-----Quartz2D-绘制富文本,绘制图片.
- spring配置日志
- Bailian2748 全排列【全排列】(POJ NOI0202-1750)
- java中src_java中garadle工程没有src问题
- opencv 阈值处理(python)
- 云上PDF怎么删除页眉页脚_word页眉页脚删除不了?教你几招轻松搞定
- fastadmin中selectpage条件wherein添加
- 科学研究设计三:抽样
- [UE4][Blueprint]虚幻4实现照相机拍照功能
- moto XT316 刷机+ROOT权限获取
- 苹果手机上运行python_手机上运行Python
- 邓仲祥:用甘肃地名命名的和政化石标本
- 2021年山东省青少年人工智能培训
- springboot毕设项目会议室预约管理系统kh090(java+VUE+Mybatis+Maven+Mysql)
热门文章
- 为什么linux桌面很刺眼,屏幕实在太亮了,眼睛都快瞎了,真心试了各种方法无效后才来问....
- pg 事务 存储过程_PgpoolII实现数据分区存储及性能分析
- linux加密文件_如何在Linux上使用Gocryptfs加密文件
- bash 别名_必不可少的Bash别名
- 南亚三大半岛_南亚最大的维基百科聚会开始
- MySql | 为什么大家都在说 Select * 效率低
- 数组实例的find() 和 findIndex()方法
- 计算机太卡了怎么解决,电脑太慢太卡怎么办,电脑太慢太卡解决方法
- java exception e抛异常_Java-------异常处理try{}catch(){Exception e}finally{}
- python捕获所有异常状态_如何在scrapy中捕获并处理各种异常