oracle between走索引吗,用了between就不会用索引?
rt
我在一个表中建了位图索引,月份字段为a('yyyy-mm')
当查询条件用between的时候查询计划就是全表扫描,当用in的时候就会使用索引.
具体如下:
查询语句:
1、使用IN的查询
Select Al1.Aae043, Al1.Nlms, Al1.Qzrs, Al1.Zprs, Al1.Gzms, Al3.Whcd, Al4.Jsdj, Al5.Xb, Al2.Xzqhmc
From Gdlddw.Dw_Gqgx Al1, Gdlddw.v_Zyjs_Xzqh Al2, Gdlddw.v_Zyjs_Whcd Al3, Gdlddw.v_Zyjs_Jsdj Al4, Gdlddw.v_Zyjs_Xb Al5
Where (Al3.Whcddm = Al1.Aac011 And Al4.Jsdjdm = Al1.Aac015 And Al5.Xbdm = Al1.Aac004 And Al2.Xzqhdm = Al1.Bae001)
And Al1.Aae043 In ('2006-09', '2006-10', '2006-11', '2006-12')
计划:
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=427 Card=4669 Bytes= 1302651)
1 0 VIEW (Cost=427 Card=4669 Bytes=1302651)
2 1 SORT (UNIQUE) (Cost=427 Card=4669 Bytes=1536101)
3 2 HASH JOIN (Cost=202 Card=4669 Bytes=1536101)
4 3 TABLE ACCESS (FULL) OF 'AA10' (Cost=4 Card=29 Bytes= 2552)
5 3 HASH JOIN (Cost=197 Card=653 Bytes=157373)
6 5 TABLE ACCESS (BY INDEX ROWID) OF 'AA10' (Cost=3 Card=29 Bytes=1914)
7 6 INDEX (RANGE SCAN) OF 'PK_AA10' (UNIQUE) (Cost=2 Card=99)
8 5 HASH JOIN (Cost=193 Card=229 Bytes=40075)
9 8 TABLE ACCESS (BY INDEX ROWID) OF 'AA10' (Cost=3 Card=29 Bytes=1711)
10 9 INDEX (RANGE SCAN) OF 'PK_AA10' (UNIQUE) (Cost=2 Card=99)
11 8 HASH JOIN (Cost=189 Card=368 Bytes=42688)
12 11 TABLE ACCESS (FULL) OF 'X_ZHCS' (Cost=2 Card=7 Bytes=511)
13 11 TABLE ACCESS (BY INDEX ROWID) OF 'DW_GQGX' (Cost=186 Card=851 Bytes=36578)
14 13 BITMAP CONVERSION (TO ROWIDS)
15 14 BITMAP AND
16 15 BITMAP MERGE
17 16 BITMAP KEY ITERATION
18 17 TABLE ACCESS (FULL) OF 'AA10' (Cost=4 Card=29 Bytes=2552)
19 17 BITMAP INDEX (RANGE SCAN) OF 'AAC004_IDX'
20 15 BITMAP MERGE
21 20 BITMAP KEY ITERATION
22 21 TABLE ACCESS (BY INDEX ROWID) OF 'AA10' (Cost=3 Card=29 Bytes=1914)
23 22 INDEX (RANGE SCAN) OF 'PK_AA10' (UNIQUE) (Cost=2 Card=11)
24 21 BITMAP INDEX (RANGE SCAN) OF 'AAC015_IDX'
25 15 BITMAP MERGE
26 25 BITMAP KEY ITERATION
27 26 TABLE ACCESS (BY INDEX ROWID) OF 'AA10' (Cost=3 Card=29 Bytes=1711)
28 27 INDEX (RANGE SCAN) OF 'PK_AA10' (UNIQUE) (Cost=2 Card=11)
29 26 BITMAP INDEX (RANGE SCAN) OF 'AAC011_IDX'
30 15 BITMAP OR
31 30 BITMAP INDEX (SINGLE VALUE) OF 'AAE043_IDX'
32 30 BITMAP INDEX (SINGLE VALUE) OF 'AAE043_IDX'
33 30 BITMAP INDEX (SINGLE VALUE) OF 'AAE043_IDX'
34 30 BITMAP INDEX (SINGLE VALUE) OF 'AAE043_IDX'
2、使用between的查询
Select Al1.Aae043, Al1.Nlms, Al1.Qzrs, Al1.Zprs, Al1.Gzms, Al3.Whcd, Al4.Jsdj, Al5.Xb, Al2.Xzqhmc
From Gdlddw.Dw_Gqgx Al1, Gdlddw.v_Zyjs_Xzqh Al2, Gdlddw.v_Zyjs_Whcd Al3, Gdlddw.v_Zyjs_Jsdj Al4, Gdlddw.v_Zyjs_Xb Al5
Where (Al3.Whcddm = Al1.Aac011 And Al4.Jsdjdm = Al1.Aac015 And Al5.Xbdm = Al1.Aac004 And Al2.Xzqhdm = Al1.Bae001) and
(1 = 1 And Al1.Aae043 Between '2002-01' And '2007-01')
查询计划为:
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=152469 Card=2082031
Bytes=580886649)
1 0 VIEW (Cost=152469 Card=2082031 Bytes=580886649)
2 1 SORT (UNIQUE) (Cost=152469 Card=2082031 Bytes=684988199)
3 2 HASH JOIN (Cost=251 Card=2082031 Bytes=684988199)
4 3 TABLE ACCESS (FULL) OF 'AA10' (Cost=4 Card=29 Bytes=
2552)
5 3 HASH JOIN (Cost=237 Card=291295 Bytes=70202095)
6 5 TABLE ACCESS (BY INDEX ROWID) OF 'AA10' (Cost=3 Ca
rd=29 Bytes=1914)
7 6 INDEX (RANGE SCAN) OF 'PK_AA10' (UNIQUE) (Cost=2
Card=99)
8 5 HASH JOIN (Cost=231 Card=101917 Bytes=17835475)
9 8 TABLE ACCESS (BY INDEX ROWID) OF 'AA10' (Cost=3
Card=29 Bytes=1711)
10 9 INDEX (RANGE SCAN) OF 'PK_AA10' (UNIQUE) (Cost
=2 Card=99)
11 8 HASH JOIN (Cost=225 Card=164225 Bytes=19050100)
12 11 TABLE ACCESS (FULL) OF 'X_ZHCS' (Cost=2 Card=7
Bytes=511)
13 11 TABLE ACCESS (FULL) OF 'DW_GQGX' (Cost=220 Car
d=12972 Bytes=557804)
还有个问题,查询的时候很多递归SQL,不知道为什么? 使用位图索引也有112 recursive calls,不知道为什么?
谢谢!
oracle between走索引吗,用了between就不会用索引?相关推荐
- oracle强制走索引_实验验证:Oracle聚簇因子对索引使用的影响
[引言] 本文基于如下文章进行的实验,讲述聚簇因子对SQL索引的影响. 链接如下: https://www.modb.pro/db/40283 一张表上有索引,sql在执行的时候却不走索引的原因有很多 ...
- Oracle like 走索引
Oracle中like走不走索引要根据具体的写法来判断. 例如:有表student,表中有字name,age.name上有索引 创建索引语句如下: create index idx_student_0 ...
- oracle索引可以加到in,为什么你加的索引不管用?
最近在办公室里,听见这么一段对话: Bob: Alice,我看了下你昨天告诉我的那个慢查询,我已经把你想要的那个索引给加上去.现在肯定OK了. Alice:谢谢你,Bob.我马上确认一下-不对啊,还是 ...
- Oracle数据库的视图、物化视图、序列、同义词、索引
Oracle数据库对象 视图 物化视图 序列 同义词 索引 注:以下数据库对象中, 物化视图.序列.同义词为Oracle数据库特有 视图 含义:视图是一种数据库对象,是从一个或者多个数据表或视图中导出 ...
- Oracle 9i 10g编程艺术-深入数据库体系结构——第11章:索引
第11章 索引 索引是应用设计和开发的一个重要方面.如果有太多的索引,DML的性能就会受到影响.如果索引太少,又会影响查询(包括插入.更新和删除)的性能.要找 ...
- 建立唯一索引后mysql策略_【MySQL】MySQL索引背后的之使用策略及优化【转】
另外很不错的对于索引及索引优化的文章: 索引的使用 示例数据库 为了讨论索引策略,需要一个数据量不算小的数据库作为示例.本文选用MySQL官方文档中提供的示例数据库之一:employees.这个数据库 ...
- mysql中groupby会用到索引吗_开发人员不得不知的MySQL索引和查询优化
本文主要总结了工作中一些常用的操作及不合理的操作,在对慢查询进行优化时收集的一些有用的资料和信息,本文适合有 MySQL 基础的开发人员. 索引相关 索引基数 基数是数据列所包含的不同值的数量,例如, ...
- sql server修改索引名称_【索引潜规则】覆盖索引、ICP、MRR详解
点击上方蓝色字体,关注我们 上篇文章我们说了创建索引的方法,有聚簇索引.辅助索引.前缀索引.联合索引等,也说了如何利用索引的排序功能,接着本篇文章主要来说一说索引的几种优化策略,首先我们先说下回表的概 ...
- 主键和索引哪个快_数据库两大神器【索引和锁】
前言 只有光头才能变强 索引和锁在数据库中可以说是非常重要的知识点了,在面试中也会经常会被问到的. 本文力求简单讲清每个知识点,希望大家看完能有所收获 声明:如果没有说明具体的数据库和存储引擎,默认指 ...
- mysql datetime month不走索引_like百分号加前面一定不走索引吗?一不小心就翻车,关于mysql索引那些容易错的点...
like百分号加前面一定不走索引吗? 正常来讲,我们都知道在mysql的like查询中,百分号加在关键词后面是走索引的,比如 select * like "张三%",而百分号在前面 ...
最新文章
- Java深入研究_Java深入研究【1、object类】
- CVE-2014-4113_Win32k提权漏洞学习笔记
- 完美解决tomcat/springboot启动速度相当慢 快死的状态了
- 第三次学JAVA再学不好就吃翔(part109)--LineNumberReader类
- 图形学 射线相交算法_计算机图形学中的阴极射线管
- Django思维导图
- 753 Cracking the Safe
- 服务器USB启动故障一例
- Java 工厂模式学习
- English trip -- MC(情景课)3 C Do you have a sister?
- oracle 扩展分区,Oracle在线扩展分区
- 浅析总结 Java 内部类的一些使用与梳理
- latex入门(一)——latex网站overleaf
- Mysql数据库——高阶语句(上)
- 安卓分析工具GameGurdian使用说明
- 把握数字经济时代新机遇:银行业加快推进数字化转型
- java white case语句_JAVA基础(一)
- Android开发-Handler引起的内存泄漏-实验、分析、总结。
- 软件测试 | 测试开发 | 3年测试经验跳槽成功拿下30W+年薪
- 遭遇Trojan.DL.Win32.Autorun.yuz,Trojan.Win32.Inject.gh,Trojan.Win32.Agent.zsq等
热门文章
- endnote参考文献格式
- 广和通正式发布工业级低功耗单频双模GNSS模组G030G031
- Consul:3:Agent使用入门
- 百度、高德、腾讯、天地图、谷歌、必应地图切片切图工具 MapCutter(旧名MapTiler),支持超大图、高清切片、webgl、leaflet、maptalk、openlayers、cesium等
- Linux环境部署与xshell连接虚拟机
- 2.定时任务关闭Java服务
- HTTPS SSL/TLS问题及解决方法汇总
- Android中Seekbar简单用法
- java发言_一次发言稿丶Java教程网-IT开发者们的技术天堂
- CSS3选择器介绍及用法总结