首页 > 其他分享 >1.一条select语句执行流程

1.一条select语句执行流程

时间:2023-11-17 09:34:35浏览次数:37  
标签:语句 流程 查询 索引 SQL 执行 select

一条SQL语句查询过程

  一条SQL执行过过程会经过连接器、查询缓存、解析器、执行器以及存储引擎等组件,执行过程图(仿小林coding)如下:

  MYSQL架构分为Server层存储引擎层Server层负责建立连接分析和执行SQL存储引擎负责数据的存储和提取

连接器:TCP三次握手建立连接校验用户名和密码校验权限

查询缓存:SQL需分毫不差才能从查询缓存中查询结果

词法解析:检查SQL中关键词是否存在,如from、where、group by 、having、select、order by、limit

语法解析:检查SQL语句是否存在问题

预处理器:确定表或字段是否存在;将select *中的* 扩展为表上的所有列

优化器:确定SQL语句的执行方案,即表中存在多个索引时,决定使用哪个索引。可在查询语句前加上explain查看SQL语句执行过程中,possible keykey以及type字段的值。进而分析SQL语句查询过程中的执行计划和优化过程

执行器:主键索引查询全表扫描索引下推

标签:语句,流程,查询,索引,SQL,执行,select
From: https://www.cnblogs.com/kzf-99/p/17837876.html

相关文章

  • [20231114]如何知道一条sql语句涉及到那些表.txt
    [20231114]如何知道一条sql语句涉及到那些表.txt--//别人问的问题,开始想看执行计划不就可以吗?当然一些计划可能仅仅涉及到索引。还有joinelimination可能仅仅看到1个表。--//对方的目的就是获取这条sql语句相关表,重新分析表看看。--//我想起查询表获得对应sql_id的脚本,脚本如下,参......
  • CreateCollection API执行流程(addCollectionMetaStep)_milvus源码解析
    CreateCollectionAPI执行流程(addCollectionMetaStep)源码解析milvus版本:v2.3.2CreateCollection这个API流程较长,也是milvus的核心API之一,涉及的内容比较复杂。这里介绍和channel相关的流程。整体架构:CreateCollection(addCollectionMetaStep)的数据流向:1.客户端sdk发......
  • element中select组件加入滚动分页及模糊查询
    element中select组件加入滚动分页及模糊查询1.directive.js-自定义vue指令importVuefrom'vue'exportdefault()=>{Vue.directive('loadMore',{bind(el,binding){//如上图,我通过v-if来控制了两个select框,当没有binding.arg这个参数时,我只能监听到企......
  • CreateCollection API执行流程(addCollectionMetaStep)_milvus源码解析
    CreateCollectionAPI执行流程(addCollectionMetaStep)源码解析milvus版本:v2.3.2CreateCollection这个API流程较长,也是milvus的核心API之一,涉及的内容比较复杂。这里介绍和channel相关的流程。整体架构:CreateCollection(addCollectionMetaStep)的数据流向:1.客户端sdk发出......
  • 详解数据库SQL中的三个语句:DROP、TRUNCATE 、DELETE
    本文分享自华为云社区《GaussDB数据库SQL系列-DROP&TRUNCATE&DELETE》,作者:Gauss松鼠会小助手2。一、前言在数据库中,SQL作为一种常用的数据库编程语言,扮演着至关重要的角色。SQL不仅可以用于创建、修改和查询数据库,还可以通过DROP、DELETE和TRUNCATE等语句来删除数据。这些......
  • docker使用--gpus all报错: docker: Error response from daemon: could not select d
    报错信息:docker:Errorresponsefromdaemon:couldnotselectdevicedriver""withcapabilities:[[gpu]].解决方法:1,任意路径下创建nvidia-container-runtime-script.sh文件vimnvidia-container-runtime-script.sh拷贝下方内容到nvidia-container-runtime-script.......
  • var 声明变量的特点:没有块级作用域、存在变量提升 。没有块级作用域,使 var 声明的变量
    请问函数test最终输出的值是多少?vara=1;functiontest(){console.log(a);if(false){vara=2;}}test();A1B2CundefinedDnull正确答案:CJavascript分为预处理阶段和执行阶段,尽管if里面的语句不会被执行,但是在预处理阶段还是会将其提升......
  • 函数声明提升优先级高于变量声明提升; 提升就是声明(变量/函数)提至当前作用域的最顶
    执行以下程序,输出结果为()vara=2;functionfn(){b();return;vara=1;functionb(){console.log(a);}}fn();A1B2CundefinedD抛出异常正确答案:C虽然return语句可以终止函数,但是return语句后如果有变量和函数声明,仍然存在变量提升和函数提升......
  • shell 循环while语句
    while条件 #while关键字,条件和if的条件一样,#while循环当条件为真的时候循环同时会一直循环,也就所说的死循环,为假时不循环do 循环体done#注意:while循环处理文件里面的行比较擅长,不管有没有空格都是一行。案例:#vimc.sh#!/usr/bin/bashi=1while[$i-lt50]do ......
  • 避免defer陷阱:拆解延迟语句,掌握正确使用方法
    基本概念Go语言的延迟语句defer有哪些特点?通常在什么情况下使用?Go语言的延迟语句(deferstatement)具有以下特点:延迟执行:延迟语句会在包含它的函数执行结束前执行,无论函数是正常返回还是发生异常。后进先出:如果有多个延迟语句,它们会按照后进先出(LIFO)的顺序执行。也就是说,......