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的范围里查,这样会很快

  • 相关阅读:
    CSS3阴影 box-shadow的使用和技巧总结
    css实现一行文字居中,多行文字左对齐
    让一个div里面的其它div或者标签内容居中
    巧用css内容生成
    Emmet-前端开发神器
    新手向:Vue 2.0 的建议学习顺序
    require() 源码解读
    Vue-webpack项目配置详解
    webpack---webpack构建vue多页面框架(一、工程布局)
    STS创建spring boot项目,pom.xml文件第一行报错
  • 原文地址:https://www.cnblogs.com/wanggang-java/p/11970948.html
Copyright © 2011-2022 走看看