zoukankan      html  css  js  c++  java
  • oralce索引中INDEX SKIP SCAN 和 INDEX RANGE SCAN区别

    INDEX SKIP SCAN

    当表中建立有复合索引的时候,查询时,除复合索引第一列外,别的列作为条件时,且优化器模式为CBO,这个时候查询可能会用到INDEX SKIP SCAN

    skip scan会检测出前导列的唯一值个数,每个唯一值都会作为常规扫描的入口,再次基础上做一次查找,最后将这些查询的结果合并返回;

    举个例子:加入有这么一张表student(字段id,sex,name等)创建了一个复合索引(sex,name);

    select id,sex,name where name = '张四'

    上面这个查询条件name在复合索引中,且不是第一列,那么会将第一列sex,作为入口,sex列在数据库中无非两个值:男或女,那么它将转换为

    select id,sex,name where sex = '' and name = '张四'
    union
    select id,sex,name where sex = '' and name = '张四'

    也就是说sex有几个值,他就会有几个查询,并将这几个查询结果合并

    如果入口的数据集较大时,那么这个查询效率是很低的。但是相比全表扫描来说也是很快的,相比直接索引来说效率是低下的

    INDEX RANGE SCAN

    range scan是一种常用的检索方式,在index range scan中oracle访问毗邻的索引条目,然后根据rowid去检索表里的条目,

    例如查询:查询范围为80号的部门里的所有员工

    select JOB_ID,FIRST_NAME from employees where DEPARTMENT_ID=80;

    INDEX RANGE SCAN是范围扫描,举个例子,有1到100,分5个范围,要查询45就要到第3的范围里查,这样会很快

  • 相关阅读:
    PHP获取今天、昨天、明天的日期
    PHP使用Apache中的ab测试网站的压力性能
    php 数组操作
    ajax实时获取下拉数据
    php微信支付测试开发(流程已通)
    微信支付调用JSAPI缺少参数:timeStamp
    JS dom最常用API
    Javascript刷新页面的几种方法
    php+mysql 安全
    隐式的类类型转换
  • 原文地址:https://www.cnblogs.com/wanggang-java/p/11970948.html
Copyright © 2011-2022 走看看