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就不会用索引?相关推荐

  1. oracle强制走索引_实验验证:Oracle聚簇因子对索引使用的影响

    [引言] 本文基于如下文章进行的实验,讲述聚簇因子对SQL索引的影响. 链接如下: https://www.modb.pro/db/40283 一张表上有索引,sql在执行的时候却不走索引的原因有很多 ...

  2. Oracle like 走索引

    Oracle中like走不走索引要根据具体的写法来判断. 例如:有表student,表中有字name,age.name上有索引 创建索引语句如下: create index idx_student_0 ...

  3. oracle索引可以加到in,为什么你加的索引不管用?

    最近在办公室里,听见这么一段对话: Bob: Alice,我看了下你昨天告诉我的那个慢查询,我已经把你想要的那个索引给加上去.现在肯定OK了. Alice:谢谢你,Bob.我马上确认一下-不对啊,还是 ...

  4. Oracle数据库的视图、物化视图、序列、同义词、索引

    Oracle数据库对象 视图 物化视图 序列 同义词 索引 注:以下数据库对象中, 物化视图.序列.同义词为Oracle数据库特有 视图 含义:视图是一种数据库对象,是从一个或者多个数据表或视图中导出 ...

  5. Oracle 9i 10g编程艺术-深入数据库体系结构——第11章:索引

    第11章                      索引 索引是应用设计和开发的一个重要方面.如果有太多的索引,DML的性能就会受到影响.如果索引太少,又会影响查询(包括插入.更新和删除)的性能.要找 ...

  6. 建立唯一索引后mysql策略_【MySQL】MySQL索引背后的之使用策略及优化【转】

    另外很不错的对于索引及索引优化的文章: 索引的使用 示例数据库 为了讨论索引策略,需要一个数据量不算小的数据库作为示例.本文选用MySQL官方文档中提供的示例数据库之一:employees.这个数据库 ...

  7. mysql中groupby会用到索引吗_开发人员不得不知的MySQL索引和查询优化

    本文主要总结了工作中一些常用的操作及不合理的操作,在对慢查询进行优化时收集的一些有用的资料和信息,本文适合有 MySQL 基础的开发人员. 索引相关 索引基数 基数是数据列所包含的不同值的数量,例如, ...

  8. sql server修改索引名称_【索引潜规则】覆盖索引、ICP、MRR详解

    点击上方蓝色字体,关注我们 上篇文章我们说了创建索引的方法,有聚簇索引.辅助索引.前缀索引.联合索引等,也说了如何利用索引的排序功能,接着本篇文章主要来说一说索引的几种优化策略,首先我们先说下回表的概 ...

  9. 主键和索引哪个快_数据库两大神器【索引和锁】

    前言 只有光头才能变强 索引和锁在数据库中可以说是非常重要的知识点了,在面试中也会经常会被问到的. 本文力求简单讲清每个知识点,希望大家看完能有所收获 声明:如果没有说明具体的数据库和存储引擎,默认指 ...

  10. mysql datetime month不走索引_like百分号加前面一定不走索引吗?一不小心就翻车,关于mysql索引那些容易错的点...

    like百分号加前面一定不走索引吗? 正常来讲,我们都知道在mysql的like查询中,百分号加在关键词后面是走索引的,比如 select * like "张三%",而百分号在前面 ...

最新文章

  1. Java深入研究_Java深入研究【1、object类】
  2. CVE-2014-4113_Win32k提权漏洞学习笔记
  3. 完美解决tomcat/springboot启动速度相当慢 快死的状态了
  4. 第三次学JAVA再学不好就吃翔(part109)--LineNumberReader类
  5. 图形学 射线相交算法_计算机图形学中的阴极射线管
  6. Django思维导图
  7. 753 Cracking the Safe
  8. 服务器USB启动故障一例
  9. Java 工厂模式学习
  10. English trip -- MC(情景课)3 C Do you have a sister?
  11. oracle 扩展分区,Oracle在线扩展分区
  12. 浅析总结 Java 内部类的一些使用与梳理
  13. latex入门(一)——latex网站overleaf
  14. Mysql数据库——高阶语句(上)
  15. 安卓分析工具GameGurdian使用说明
  16. 把握数字经济时代新机遇:银行业加快推进数字化转型
  17. java white case语句_JAVA基础(一)
  18. Android开发-Handler引起的内存泄漏-实验、分析、总结。
  19. 软件测试 | 测试开发 | 3年测试经验跳槽成功拿下30W+年薪
  20. 遭遇Trojan.DL.Win32.Autorun.yuz,Trojan.Win32.Inject.gh,Trojan.Win32.Agent.zsq等

热门文章

  1. endnote参考文献格式
  2. 广和通正式发布工业级低功耗单频双模GNSS模组G030G031
  3. Consul:3:Agent使用入门
  4. 百度、高德、腾讯、天地图、谷歌、必应地图切片切图工具 MapCutter(旧名MapTiler),支持超大图、高清切片、webgl、leaflet、maptalk、openlayers、cesium等
  5. Linux环境部署与xshell连接虚拟机
  6. 2.定时任务关闭Java服务
  7. HTTPS SSL/TLS问题及解决方法汇总
  8. Android中Seekbar简单用法
  9. java发言_一次发言稿丶Java教程网-IT开发者们的技术天堂
  10. CSS3选择器介绍及用法总结