SQL 语句访问路径的方式

news2024/11/26 1:13:12

SQL 语句访问路径的方式

全表扫描(Full Table Scans)

select * from t_Vio_Violation t

Plan Hash Value  : 1218663174 

-----------------------------------------------------------------------------------------
| Id | Operation           | Name            | Rows    | Bytes      | Cost   | Time     |
-----------------------------------------------------------------------------------------
|  0 | SELECT STATEMENT    |                 | 7670989 | 4042611203 | 103263 | 00:00:09 |
|  1 |   TABLE ACCESS FULL | T_VIO_VIOLATION | 7670989 | 4042611203 | 103263 | 00:00:09 |
-----------------------------------------------------------------------------------------

rowid 访问

单条件查询,rowid最快的

select rowid from   t_Vio_Violation t where t.violation_id ='3321474226'  -- AAAQ9lAAFAAAMSzAAH
select * from t_Vio_Violation t where rowid='AAAQ9lAAFAAAMSzAAH';

Plan Hash Value  : 3532886438 

----------------------------------------------------------------------------------------
| Id | Operation                    | Name            | Rows | Bytes | Cost | Time     |
----------------------------------------------------------------------------------------
|  0 | SELECT STATEMENT             |                 |    1 |   527 |    1 | 00:00:01 |
|  1 |   TABLE ACCESS BY USER ROWID | T_VIO_VIOLATION |    1 |   527 |    1 | 00:00:01 |
----------------------------------------------------------------------------------------

索引扫描(Index Scan 或 index lookup)

索引唯一扫描(index unique scan)

  • 特点:
    • 唯一性:索引唯一扫描只能用于唯一索引,确保每次查询返回的行数是唯一的。
    • 高效性:由于索引键值是唯一的,Oracle 可以直接定位到目标行,无需进一步搜索,因此效率非常高。
    • 这里的violation_id 唯一索引unique。
ITMS5_1@hfzcdb> explain plan for select * from t_Vio_Violation t where t.violation_id='3321474226';

Explained.

ITMS5_1@hfzcdb> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 4183191119

-----------------------------------------------------------------------------------------------
| Id  | Operation                   | Name            | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |                 |     1 |   527 |     3   (0)| 00:00:01 |
|   1 |  TABLE ACCESS BY INDEX ROWID| T_VIO_VIOLATION |     1 |   527 |     3   (0)| 00:00:01 |
|*  2 |   INDEX UNIQUE SCAN         | SYS_C0013148    |     1 |       |     2   (0)| 00:00:01 |
-----------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access("T"."VIOLATION_ID"='3321474226')

14 rows selected.

ITMS5_1@hfzcdb>

索引范围扫描(index range scan)

  • 特点:
    • 非唯一性:索引范围扫描使用非唯一索引,允许索引键值有重复。
    • 范围查询:适用于范围查询条件,如 >、<、BETWEEN、LIKE 等。
    • 顺序访问:按索引顺序扫描数据,通常是从最小值到最大值。
#select rowid from   t_Vio_Violation t where t.violation_id <'3321474226';

Plan Hash Value  : 94343750 

----------------------------------------------------------------------------
| Id  | Operation          | Name         | Rows | Bytes | Cost | Time     |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |              |    1 |    23 |    3 | 00:00:01 |
| * 1 |   INDEX RANGE SCAN | SYS_C0013148 |    1 |    23 |    3 | 00:00:01 |
----------------------------------------------------------------------------

Predicate Information (identified by operation id):
------------------------------------------
* 1 - access("T"."VIOLATION_ID"<'3321474226')

#select rowid from   t_Vio_Violation t where t.violation_id <'3321474226'  order by violation_id  desc;

Plan Hash Value  : 1205653834 

---------------------------------------------------------------------------------------
| Id  | Operation                     | Name         | Rows | Bytes | Cost | Time     |
---------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT              |              |    1 |    23 |    3 | 00:00:01 |
| * 1 |   INDEX RANGE SCAN DESCENDING | SYS_C0013148 |    1 |    23 |    3 | 00:00:01 |
---------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
------------------------------------------
* 1 - access("T"."VIOLATION_ID"<'3321474226')

索引全扫描(index full scan)

  • 特点:

    • 仅访问索引:索引全扫描只读取索引数据块,不访问表的数据块。

    • 顺序访问:按索引顺序访问数据,通常是从最小值到最大值。

    • 不需要过滤条件:适用于没有过滤条件或过滤条件较弱的情况。

    • 与全表扫描(Full Table Scan)不同,索引全扫描只访问索引数据块,而不需要访问整个表的数据块,因此在某些情况下可以显著提高查询性能。

#select max(t.violation_time) from t_Vio_Violation t 

Plan Hash Value  : 2284200782 

----------------------------------------------------------------------------------------------
| Id | Operation                    | Name                  | Rows | Bytes | Cost | Time     |
----------------------------------------------------------------------------------------------
|  0 | SELECT STATEMENT             |                       |    1 |     8 |    3 | 00:00:01 |
|  1 |   SORT AGGREGATE             |                       |    1 |     8 |      |          |
|  2 |    INDEX FULL SCAN (MIN/MAX) | IDX_VIOLATION_TIME_01 |    1 |     8 |    3 | 00:00:01 |
----------------------------------------------------------------------------------------------

索引快速扫描(index fast full scan)

  • 特点:

    • 并行访问:索引快速全扫描并行访问所有可用的索引块,不按索引键值的顺序访问数据。

    • 仅访问索引:只读取索引数据块,不访问表的数据块。

    • 不排序:返回的数据不按索引键值排序。

#select t.violation_type from t_Vio_Violation t
Plan Hash Value  : 2392038657 

-----------------------------------------------------------------------------------------------
| Id | Operation              | Name                  | Rows    | Bytes    | Cost  | Time     |
-----------------------------------------------------------------------------------------------
|  0 | SELECT STATEMENT       |                       | 7670989 | 23012967 | 13074 | 00:00:02 |
|  1 |   INDEX FAST FULL SCAN | IDX_VIOLATION_TIME_01 | 7670989 | 23012967 | 13074 | 00:00:02 |
-----------------------------------------------------------------------------------------------

索引跳跃扫描(index skip scan)

  • 特点:

    • 复合索引:索引跳跃扫描仅适用于复合索引,即具有多个列的索引。

    • 跳过前导列:在查询中未使用的前导列(索引定义中的第一列或前几列)会被跳过,直接使用后续列进行索引扫描。

    • 提高选择性:通过跳过选择性较低的前导列,可以提高后续列的选择性,从而提高查询性能

 #select t.violation_type from t_Vio_Violation t where t.violation_type='1625A' and t.address_desc='%路口%'
 Plan Hash Value  : 2819657385 

----------------------------------------------------------------------------------------------------------
| Id  | Operation                             | Name                  | Rows  | Bytes | Cost  | Time     |
----------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                      |                       |     1 |    44 | 53690 | 00:00:05 |
| * 1 |   TABLE ACCESS BY INDEX ROWID BATCHED | T_VIO_VIOLATION       |     1 |    44 | 53690 | 00:00:05 |
| * 2 |    INDEX SKIP SCAN                    | IDX_VIOLATION_TIME_01 | 25394 |       | 34768 | 00:00:03 |
----------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
------------------------------------------
* 1 - filter("T"."ADDRESS_DESC"='%路口%')
* 2 - access("T"."VIOLATION_TYPE"='1625A')
* 2 - filter("T"."VIOLATION_TYPE"='1625A')

/*Access:表示对应的谓词条件会影响数据的访问路径(是按照索引还是表)
Filter:表示谓词条件只会起到过滤作用,不会影响数据的访问路径。
因此,需要着重关注filter部分是否可创建索引

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2247574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

07-SpringCloud-Gateway新一代网关

一、概述 1、Gateway介绍 官网&#xff1a;https://spring.io/projects/spring-cloud-gateway Spring Cloud Gateway组件的核心是一系列的过滤器&#xff0c;通过这些过滤器可以将客户端发送的请求转发(路由)到对应的微服务。 Spring Cloud Gateway是加在整个微服务最前沿的防…

美创科技入选2024数字政府解决方案提供商TOP100!

11月19日&#xff0c;国内专业咨询机构DBC德本咨询发布“2024数字政府解决方案提供商TOP100”榜单。美创科技凭借在政府数据安全领域多年的项目经验、技术优势与创新能力&#xff0c;入选收录。 作为专业数据安全产品与服务提供商&#xff0c;美创科技一直致力于为政府、金融、…

Java编程,配置mongoUri连接mongodb时,需对特殊字符进行转义

一、背景 java程序连接mongo有两种方式&#xff1a; 用户名和密码方式uri方式 1、用户名和密码 以用户数据库为例&#xff0c;注意看它的密码 spring:data:mongodb:host: 192.168.10.17database: db_user_serviceport: 3717username: user_servicepassword: user_service3…

MySQL底层概述—1.InnoDB内存结构

大纲 1.InnoDB引擎架构 2.Buffer Pool 3.Page管理机制之Page页分类 4.Page管理机制之Page页管理 5.Change Buffer 6.Log Buffer 1.InnoDB引擎架构 (1)InnoDB引擎架构图 (2)InnoDB内存结构 (1)InnoDB引擎架构图 下面是InnoDB引擎架构图&#xff0c;主要分为内存结构和磁…

【Github】如何使用Git将本地项目上传到Github

【Github】如何使用Git将本地项目上传到Github 写在最前面1. 注册Github账号2. 安装Git工具配置用户名和邮箱仅为当前项目配置&#xff08;可选&#xff09; 3. 创建Github仓库4. 获取仓库地址5. 本地操作&#xff08;1&#xff09;进入项目文件夹&#xff08;2&#xff09;克隆…

大事件管理系统项目总结(上)

文章目录 大事件管理系统项目总结&#xff08;上&#xff09;Pinia - 配置仓库统一管理Vue3路由配置Vue3导航拦截 大事件管理系统项目总结&#xff08;上&#xff09; Pinia - 配置仓库统一管理 使用pinia多层文件夹嵌套时&#xff0c;导入某个文件的路径会很长&#xff0c;容…

鸿蒙征文|鸿蒙心路旅程:始于杭研所集训营,升华于横店

始于杭研所 在2024年7月&#xff0c;我踏上了一段全新的旅程&#xff0c;前往风景如画的杭州&#xff0c;参加华为杭研所举办的鲲鹏&昇腾集训营。这是一个专门为开发者设计的培训项目&#xff0c;中途深入学习HarmonyOS相关技术。对于我这样一个对技术充满热情的学生来说&…

flowable流程图详细绘制教程

文章目录 前言一、flowable是什么&#xff1f;回答下之前的问题 二、flowable-modeler使用1. 使用步骤2.开始绘制弄一个请假的流程 三 加载该流程总结 前言 flowable有些晦涩难懂的东西&#xff1a; 我最开始接触的时候,还是用的activity,当时觉得好复杂,那么这次经过我自己在…

【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行

文章目录&#xff1a; 【Linux 篇】Docker 的容器之海与镜像之岛&#xff1a;于 Linux 系统内探索容器化的奇妙航行前言安装docker-centos7 【Linux 篇】Docker 的容器之海与镜像之岛&#xff1a;于 Linux 系统内探索容器化的奇妙航行 &#x1f4ac;欢迎交流&#xff1a;在学习…

linux从0到1——shell编程9

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…

go项目中比较好的实践方案

工作两年来&#xff0c;我并未遇到太大的挑战&#xff0c;也没有特别值得夸耀的项目。尽管如此&#xff0c;在日常的杂项工作中&#xff0c;我积累了不少心得&#xff0c;许多实践方法也在思考中逐渐得到优化。因此&#xff0c;我在这里记录下这些心得。 转发与封装 这个需求…

Maven的安装——给Idea配置Maven

一、什么是Maven? Maven是一个开源的项目管理工具&#xff0c;它主要用于Java项目的构建、依赖管理和项目生命周期管理。 二、准备环境 maven安装之前&#xff0c;我们要先安装jdk&#xff0c;确保你已经安装了jdk环境。可以通过【win】【r】打开任务管理器&#xff0c;输入…

vscode 远程连接ssh 密钥方式

目录 1. powershell 生成key&#xff1a; 2. 在服务器上安装公钥 linux测试成功&#xff1a; 3).为了确保连接成功&#xff0c;输入如下指令以保证以下文件权限正确&#xff1a; 3 开启 ssh 密钥登录 vscode 远程连接配置 python连接测试ok 查看日志&#xff1a; 命令…

Charles抓包工具-笔记

摘要 概念&#xff1a; Charles是一款基于 HTTP 协议的代理服务器&#xff0c;通过成为电脑或者浏览器的代理&#xff0c;然后截取请求和请求结果来达到分析抓包的目的。 功能&#xff1a; Charles 是一个功能全面的抓包工具&#xff0c;适用于各种网络调试和优化场景。 它…

Echarts+VUE饼图的使用(基础使用、多个饼图功能、单组饼图对应颜色使用)

安装&#xff1a;npm install echarts --save 配置:main.js // 引入echarts import * as echarts from echarts Vue.prototype.$echarts echarts一、基础饼图&#xff08;直接拷贝就能出效果&#xff09; <div class"big-box" ref"demoEhart"><…

神经网络(系统性学习三):多层感知机(MLP)

相关文章&#xff1a; 神经网络中常用的激活函数 神经网络&#xff08;系统性学习一&#xff09;&#xff1a;入门篇 神经网络&#xff08;系统性学习二&#xff09;&#xff1a;单层神经网络&#xff08;感知机&#xff09; 多层感知机&#xff08;MLP&#xff09; 多层感…

C语言练习.if.else语句.strstr

今天在做题之前&#xff0c;先介绍一下&#xff0c;新学到的库函数strstr 想要使用它&#xff0c;要先给它一个头文件<string.h> char *strstr(const char*str1,const char*str2); 首先&#xff1a;1.strstr的返回值是char&#xff0c;字符类型的。 2.两个实参&#xff…

golang实现TCP服务器与客户端的断线自动重连功能

1.服务端 2.客户端 生成服务端口程序: 生成客户端程序: 测试断线重连: 初始连接成功

c语言数据结构与算法--简单实现线性表(顺序表+链表)的插入与删除

老规矩&#xff0c;点赞评论收藏关注&#xff01;&#xff01;&#xff01; 目录 线性表 其特点是&#xff1a; 算法实现&#xff1a; 运行结果展示 链表 插入元素&#xff1a; 删除元素&#xff1a; 算法实现 运行结果 线性表是由n个数据元素组成的有限序列&#xff…

textureLod lod的确定

1. 自动计算导数方法 float calculateLOD(sampler2D tex, vec2 uv) { // 计算纹理坐标的导数 vec2 dUVdx dFdx(uv); vec2 dUVdy dFdy(uv); // 计算纹理大小 vec2 textureSize textureSize(tex, 0); // 0表示基础mipmap级别 // 计算LOD float maxDeriv max(length(…