Mysql 查询运行过程 大致分为4个阶段吧:

语法分析(sql_parse.cc<词法分析, 语法分析, 语义检查 >)

>>sql_resolver.cc # JOIN.prepare

生成逻辑查询plan(sql_optimizer.cc)

>># JOIN.optimize

生成物理查询plan(sql_planner.cc)

run the explain plan(sql_executor.cc) JOIN.exec

JOIN.prepare() :

子查询的冗余子句消除

in类型子查询优化 resolve_subquery()

将all/any等类型子查询转换为min/max操作 对简单子查询进行的优化

JOIN.optimize():

子查询上拉 flatten_subqueries()

把外连接优化为内连接   simplify_joins()

消除嵌套连接

where子句, join/on子句,having子句化简,含有常量的表达式化简,等式合并 optimize_cond() opt_sum_query()

优化没有group by 子句的下的count(*) min() man()

确定多表连接路径 make_join_statistice()

优化distinct

创建暂时表存储暂时结果优化分组排序 choose_table_order()

事实上,逻辑与物理优化,有点混乱,分得不明白,

就是在物理查询优化之后,继续进行了部分逻辑优化

仅两种单表扫描方式:

index scan(others), table scan(JT_ALL)

Opt_range.h > class QUICK_SELECT_I > 利用索引扫描滴总接口

其几个子类 见source code;

基本的类和结构体:

查询树 class st_select_lex

索引 struct st_key_create_information   class Key_part_spec

连接表 st_join_table

连接类  JOIN : public Sql_alloc

条件  COND_EQUAL

位置  struct st_position

代价估算  Cost_estimate

SELECT NOW(),CURDATE(),CURTIME()

转载于:https://www.cnblogs.com/yxwkf/p/3886654.html

退役笔记一#MySQL = lambda sql : sql + #39; Source Code 4 Explain Plan #39;相关推荐

  1. 学习笔记之-MySql高级之sql优化

    一 Mysql简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. M/SQL是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据 ...

  2. mysql注入攻击实_三十三、MySQL基础系列笔记之MySQL安全问题与SQL注入攻击

    SQL注入攻击大多数与程序有关系,程序不严谨是导致SQL注入攻击成功的一个原因.安全问题不容忽视,平常的开发中应关注安全问题.下面简单记录PHP中的SQL攻击问题. 什么是SQL注入攻击 SQL注入( ...

  3. mysql 临时表 事务_MySQL学习笔记十:游标/动态SQL/临时表/事务

    逆天十三少 发表于:2020-11-12 08:12 阅读: 90次 这篇教程主要讲解了MySQL学习笔记十:游标/动态SQL/临时表/事务,并附有相关的代码样列,我觉得非常有帮助,现在分享出来大家一 ...

  4. 牛客网SQL刷题笔记(MySQL)

    牛客网SQL刷题笔记(MySQL) 此博客集合LeetCode.牛客网常见的题型及其解法,侵删 目录 牛客网SQL刷题笔记(MySQL) 类型1:查找排名第几的数据 SQL2 查找入职员工时间排名倒数 ...

  5. Mysql学习笔记(基础)基础sql语句详细记录

    数据库学习(基础) // 个人网课学习记录,如果有违规等问题,请联系我删除~ mysql下载安装( 解压版安装配置 下载版安装配置 ) 需求分析:使用cmd命令来创建一个数据库,并对数据库中得一张分类 ...

  6. 一千行MySQL学习笔记(MySQL常见SQL语句全详解)

    /* 启动MySQL */ net start mysql/* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码/* 跳过权限验证登录MySQL */ mysqld ...

  7. php 登陆 sql语句,PHP 连接MySQL数据库的SQL语句的简单示例

    这篇文章主要为大家详细介绍了PHP 连接MySQL数据库的SQL语句的简单示例,具有一定的参考价值,可以用来参考一下. 首先用phpmyadmin进入建立数据库user 再建个三段的表admin 再别 ...

  8. cockroachdb mysql_CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储...

    CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...

  9. MySQL中的SQL Mode及其作用

    点击上方"蓝字" 关注我们,享更多干货! 与其它数据库不同,MySQL可以运行在不同的SQL Mode下.SQL Mode定义MySQL应该支持什么样的SQL语法,以及它应该执行什 ...

最新文章

  1. js调试之console.log()
  2. superset出现A valid API access token is required to use Mapbox data
  3. 如何使用Vue集成其它UI组件?如何阅读UI官网?移动端组件Vant实例教程(熬夜干货)
  4. egg 编码规范_从 Egg.js 到 NestJS,爱码客后端选型之路
  5. 计算机网络中的HTML,计算机网络分类有哪些
  6. Java:List判空的条件:List=null 和 List.size = 0 当需要对一个LIst进行判空操作时我们可使用如下两个语句:
  7. 相同数据源情况下,使用Kafka实时消费数据 vs 离线环境下全部落表后处理数据,结果存在差异...
  8. 【软件资源】MATLAB 7.0 安装教程
  9. matlab期货,Matlab在股指期货中的应用
  10. 4g模块Linux拨号ppp脚本,在ARM-linux上实现4G模块PPP拨号上网【转】
  11. provisional headers are shown问题排查
  12. WinServer2008 安装 Intel(R) 82579V Gigabit Network 网卡驱动
  13. n+1天 吾日三省吾身
  14. 输入参数varargin
  15. 无法打开这个应用,查看Microsoft store, 了解有关Nahimic的详细信息
  16. 【AWS云从业者基础知识笔记】——模块7:监控和分析
  17. 《阿里云天池大赛赛题解析(深度学习篇)》学习笔记(1)自然语言处理基础
  18. 构建产品“设计,制造,使用”的智慧互联 - Autodesk Forge概述 - 1
  19. 离散数学 (II) 习题 1
  20. 数据仓库ETL工具箱——清洗和规范化(一)

热门文章

  1. 网站推广——网站推广专员如何恢复下降的权重值?
  2. 网站建设需遵循用户访问习惯
  3. 修复Linux系统内核TCP漏洞,修复Linux TCP SACK PANIC 远程拒绝服务漏洞
  4. java公寓管理系统设计与实现_学生公寓(宿舍)管理系统的设计与实现(论文范文, jspjava).docx_蚂蚁文库...
  5. (转载)vim括号匹配等跳转技巧
  6. Kotlin学习 PART 1:kotlin定义和目的
  7. spark submit 入门
  8. 几种常见的CSS布局
  9. js在for循环中绑定事件
  10. webstorm / intellij IDEA / phpstorm license server 激活链接 (过期留言更新)