暂无图片
MySQL在查询处理的哪个阶段创建查询的执行计划??
我来答
分享
zhangyfr
2022-11-26
MySQL在查询处理的哪个阶段创建查询的执行计划??

MySQL在查询处理的哪个阶段创建查询的执行计划??

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
yBmZlQzJ

1.语法分析阶段:将SQL查询语句经词法和语法分析后变换为一颗查询树st_select_lex传给优化器,并对SQL表达的语义进行检查。

2.生成逻辑查询执行计划阶段:优化器在查询树中遍历每个关系,确定关系是否是常量表,为每个关系查找可用的索引,运用关系
代数原理和启发式规则进行逻辑上的查询优化(如消除子查询,消除外连接等)。

3.生成物理查询执行计划阶段:优化器对每个连接的表进行排序,然后再求解多表连接最优路径,对于每个关系尽量利用索引计算其
代价,找出代价最小的路径后保存到JOIN类的best_positions。

4.执行查询执行计划阶段:把查询执行计划传到执行器进行执行。

暂无图片 评论
暂无图片 有用 2
打赏 0
暂无图片
yBmZlQzJ
答主
2022-11-26
刘贵宾
2022-11-26
ora_221
2022-11-27
李宏达

暂无图片 评论
暂无图片 有用 1
打赏 0
李宏达
答主
2022-11-26
szrsu
暂无图片

暂无图片 评论
暂无图片 有用 0
打赏 0
小七

路过,学习

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
mysql如何查看库中有那些表是具有生成列的表?
回答 2
要查看MySQL数据库中具有生成列的表,您可以使用以下查询:SELECTTABLENAMEFROMINFORMATIONSCHEMA.TABLESWHERETABLESCHEMA'yourdataba
为什么这个MYSQL 服务关闭不了?
回答 3
检查一下你的mysql.service配置的内容,我看你截图的第一个进程应该是手动前台启动的,第二个进程你确认一下受不受mysql.service文件控制,然后在检查一下MySQL数据库的日志和系统的
mysql中rc隔离下,select for update和update的不同?
回答 2
selectforupdate执行计划走的全表扫描,mysql就会锁全表update走的是主键索引,在rc模式下,就锁单个记录。
mysql8,在插入表时提示 The table '/tmp/#sql124e7_b_1d' is full ,已经调整了 max_heap_table_size 和 tmp_table_size 还是出现同样的错误,怎么解决?
回答 3
SETSESSIONinternaltmpmemstorageengineMEMORY;
Mysql中case when里@变量赋值为0为什么会失败?
回答 1
when后给判断语句。你这个是给的是赋值语句。因为@m:0则为false了。你改一下就知道其实是赋值上了selectcasewhen@m:0then@melse@mendasnum
MySQL重启不了了怎么办?
回答 1
cmd方式启动下,结合日志看下具体报错信息
linux 6.8 mysql建议什么版本比较稳定?
回答 1
已采纳
是CentOS6.8吗?MySQL5.7和8都行。越新的越好一些,毕竟修复了漏洞和BUG。但是不排除有新的问题。最主要的还是SQL质量。SQL好的用5.6也行,SQL不好的用Oracle也不行。
对MySQL同一张表的不同属性添加create unique index on Student(Sno asc) / create unique index on Student(Sname desc)会有影响吗?
回答 1
已采纳
可能会造成交差索引。不推荐。
information_schema在操作系统的文件系统上有对应的目录文件吗?
回答 1
已采纳
系统数据库informationschema中保存着MySQL的静态元数据,它实际上是一个虚拟数据库,并不包含任何实际的数据,是唯一一个在操作系统的文件系统上没有对应目录的数据库,因此该数据库的表只能
有没有人遇到innodb cluster的这个问题。集群的mysql router无故报错,需要重启才能恢复。
回答 1
错误信息里提示无法连接mgr的innodbmetadata库。router需要定期的链接mysqlinnodbmetadata库获取mgr状态。看情况更像数据库无法连接,比如主库上因为堵塞无法正常连接