首页 > 数据库 >执行一条 SQL 查询语句,期间发生了什么?

执行一条 SQL 查询语句,期间发生了什么?

时间:2023-09-13 22:45:20浏览次数:49  
标签:语句 执行器 SQL 查询 sql 执行

执行一条 SQL 查询语句,期间发生了什么?

  • 连接器 :建立连接,身份验证
  • 查询缓存:已经在mysql8.0被删除
  • 解析sql
    • 词法分析,解析关键词
    • 语法分析,根据词法分析得出的关键词判断语法是否有问题
    • 建立语法树
  • 执行sql
    • 预处理,检查表名和表字段是否存在,将select *的*转为全部字段
    • 优化,对sql语句优化,负责将执行sql的方案确定下来
    • 执行,执行器将条件交给存储引擎,存储引擎定位查询到合适的记录后就返回给执行器判断是否符合查询条件,重复过程,直到没有记录符合查询条件

标签:语句,执行器,SQL,查询,sql,执行
From: https://www.cnblogs.com/xiuer211/p/17700990.html

相关文章

  • MySQL数据存放相关问题?
    MySQL的数据存放在哪个文件?MySQL的数据存放在哪个文件?存放在idb文件中表空间文件的结构是怎么样的?段-区-页-行,四个等级行:保存数据的最小单位页:mysql按照页读取数据,默认页大小为16KB区:B+树中每一层都是通过双向链表连接起来的,如果是以页为单位来分配存储空间,那么链表中......
  • CTyunOS安装MySQL8.0
    (CTyunOS安装MySQL8.0)最近天翼云搞活动,购了一台4U8G的服务器,这里讲解一下如何安装Mysql吧。1.yum安装yuminstall-ymysqlyuminstall-ymysql-commonyuminstall-ymysql-errmsgyuminstall-ymysql-libsyuminstall-ymysql-serveryum我们查询一下,可以看到有这......
  • Kingbase中手写Mysql底层函数DATE_FORMAT()
    Kingbase中手写Mysql底层函数DATE_FORMAT()分析底层函数的实现逻辑MySQL的DATE_FORMAT()函数其底层逻辑涉及多个组件和模块。以下是DATE_FORMAT()函数的大致实现逻辑:解析日期格式字符串:DATE_FORMAT()函数接受两个参数,一个是日期值,另一个是格式字符串。首先,MySQL解析格......
  • SQL优化建议
    后端程序员必备:SQL高性能优化指南!35+条优化建议立马GET!(qq.com)后端程序员必备:书写高质量SQL的30条建议(qq.com)MySQL高性能优化规范建议,速度收藏(qq.com)面试问题与回答谈谈你对SQL优化的经验这个问题涉及的面比较广,我说一下自己遇到过的首先是表的设计优化,用定......
  • SQLite - Python
    安装SQLite3可使用sqlite3模块与Python进行集成。sqlite3模块是由GerhardHaring编写的。它提供了一个与PEP249描述的DB-API2.0规范兼容的SQL接口。您不需要单独安装该模块,因为Python2.5.x以上版本默认自带了该模块。为了使用sqlite3模块,您首先必须创建一......
  • ubuntu安装mysql8
    默认安装5.x版本sudoaptinstallmysql-server安装8.x版本,请继续往下看:https://dev.mysql.com/downloads/repo/apt/查看最新的mysql版本apt-getupdatewgethttps://repo.mysql.com//mysql-apt-config_0.8.26-1_all.debdpkg-imysql-apt-config_0.8.26-1_all.debapt-ge......
  • ubuntu卸载mysql
    1、停止MySQL服务器sudoservicemysqlstop2、卸载MySQL服务器软件包sudoapt-getpurgemysql-server3、删除MySQL配置文件和数据sudorm-rf/etc/mysql/var/lib/mysql4、清理残留文件和目录sudoapt-getautoremovesudoapt-getautoclean   ......
  • 遇到了一个brainfuck语句
    brainfuck语句能直接在浏览器f12的,形如console执行。形如:(+[![]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]+[])[!+[]+!+[]+!+[]]+(!......
  • 使用R语言查询某物种所有通路及通路内的基因
    使用R语言查询某物种所有通路及通路内的基因,这里使用Y书的clusterProfiler包。这里以人类为例查询所有通路及通路内的基因:library(R.utils)R.utils::setOption("clusterProfiler.download.method","auto")hsa_kegg<-clusterProfiler::download_KEGG("hsa") 这里使用的......
  • MySql数据库中,对于同一个表,如果直接把查询结果赋值给待更新字段,则会出现锁表的情况。
    MySql数据库中,对于同一个表,如果直接把查询结果赋值给待更新字段,则会出现锁表的情况。原因是:mysql在from子句中遇到子查询时,先执行子查询并将结果放到一个临时表中,我们通常称它为“派生表”;临时表是没有索引、无法加锁的。update时,会锁表,此时不能再select。所以会报错,此时如果将......