谁能具体说一下这个sql语句执行的详细过程
发布网友
发布时间:2022-04-08 18:08
我来回答
共3个回答
懂视网
时间:2022-04-08 22:30
MYSQL查询执行过程
客户端向服务器发送请求
服务器查询缓存,缓存中命中则结束,将结果返回客户端(返回前会检查用户权限),否则继续下边步骤
服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划
根据执行计划调用存储引擎的API执行查询
将结果返回客户端
一、查询缓存
如果一条SQL语句以select开头,MySQL服务器将会尝试先在缓存中查询。每个cache都是以SQL文本做为key的,所以如果SQL语句中大小写不同也无法命中。
设置:my.cnf(Linuxe)/my.ini(Windows)
query_cache_type=0时,不启用缓存查询
query_cache_type=1时,启用缓存查询。如果在select后使用SQL_NO_CACHE,则本条SQL不使用缓存,对于查询很分散的SQL,不建议使用缓存,例如根据用户Id查询用户信息
query_cache_type=2时,只对特定语句使用缓存。select后使用SQL_CACHE则进行缓存查询,对于接近静态数据的表,可以使用SQL_CACHE提高效率
命令:show variables like ‘%query_cache%‘查询缓存配置参数
命令:show status like ‘%Qcache%‘查询缓存情况
Qcache_hits:命中次数
Qcache_inserts:未命中后插入次数
二、MySQL解析器和预处理
Parser解析器
SQL命令传递到解析器的时候会被解析器验证和解析,主要功能为:
解析器将SQL语句分解成数据结构,并将这个结构传递到后续步骤,以后SQL的传递和处理都是基于这个结构的
如果在分解成数据结构中遇到错误,那么就说明这个SQL语句是不合法的
预处理
三、MySQL查询优化器
查询优化器将语法树转换为执行计划,并找出最好的执行计划。
可以使用explain查看查询优化器的操作,编写SQL语句的方式决定查询优化器如何使用索引。
参考:http://blog.chinaunix.net/uid-570310-id-2734848.html
本文出自 “塞上名猪” 博客,请务必保留此出处http://zuohao1990.blog.51cto.com/6057850/1720116
SQL查询执行过程
标签:mysql 优化 查询执行过程
热心网友
时间:2022-04-08 19:38
declare @sql varchar(8000)
set @sql = 'select level ' ------赋值@sql
print @sql ---执行的第一步,打印出来
select @sql = @sql+', Min(case months when ''' + months + ''' then times else 0 end) [' + months + ']'
from (select distinct months from M) as a ----使用select 的给@sql在次赋值
print @sql ----执行的第二步 ,打印出来
set @sql = @sql + ' from M group by level' ----在一次@sql赋值
print @sql ----执行的第三步,打印出来
exec(@sql) ---使用EXEC调用字符串
print @sql -----打引出EXEC调用的SQL语句
Select * From M ---查询M表
在查询分析器里执行上面的你就知道它在做什么了!!
其实就是字符串拼凑!
热心网友
时间:2022-04-08 20:56
我对这个也稀里糊涂的。。
期待有高人详细解析下。
SQL语句执行过程详解
第一步:客户端把语句发给服务器端执行当我们在客户端执行 select 语句时,客户端会把这条 SQL 语句发送给服务器端,让服务器端的进程来处理这语句。也就是说,Oracle 客户端是不会做任何的操作,他的主要任务就是把客户端产生的一些 SQL 语句发送给服务器端。虽然在客户端也有一个数据库进程,但是,这个进程的作用...
MySQL—一条查询SQL语句的完整执行流程
MySQL查询执行流程详解:首先,当接收到SQL请求时,MySQL从连接层面开始操作:连接数据库: 客户端尝试与数据库建立连接,由连接器处理。若长时间无操作,连接可能会因wait_timeout参数设置(默认8小时)而自动断开。"Sleep"状态的连接表示空闲。查询缓存: 如果有缓存功能,MySQL会检查是否之前执行过相同的语句。
SQL语句执行流程与顺序原理解析
SQL语句执行流程与顺序原理解析Oracle语句执行流程第一步:客户端把语句发给服务器端执行当我们在客户端执行SQL语句时,客户端会把这条SQL... SQL语句执行流程与顺序原理解析Oracle语句执行流程第一步:客户端把语句发给服务器端执行当我们在客户端执行SQL语句时,客户端会把这条SQL 展开 我来答 1个回答 #热议# ...
SQL语句在数据库中是如何执行的
第一步:应用程序把查询SQL语句发给服务器端执行我们在数据层执行SQL语句时,应用程序会连接到相应的数据库服务器,把SQL语句发送给服务器处理。第二步:服务器解析请求的SQL语句SQL计划缓存,经常用查询分析器的朋友大概都知道这样一个事实,往往一个查询语句在第一次运行的时候需要执行特别长的时间,但是...
sql语句的执行流程是什么?
怎么执行sql命令?
执行sql命令步骤如下:1、点击页面中的【SQL】。2、打开之后在右侧就会出现一个空白的区域。输入所需的SQL命令。3、SQL语句输入完整之后,在空白区域 ,点击右键选择执行。以上就是执行sql命令的步骤。
求大神指点以下SQL查询语句
1、这是sql中常用的“相关子查询”;2、相关子查询的执行依赖于外部查询。多数情况下是子查询的WHERE子句中引用了外部查询的表。 执行过程:(1)从外层查询中取出一个元组,将元组相关列的值传给内层查询。(2)执行内层查询,得到子查询操作的值。(3)外查询根据子查询返回的结果或结果集得到满足...
求查询语句的具体执行过程,求专家指导
3、 OUTER (JOIN):如果指定了OUTER JOIN(相对于CROSS JOIN或INNER JOIN) ,保留表中未找到匹配的行将作为外部行添加到VT2,生成TV3。如果FROM子句包 含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤 3,直到处理完所有的表位置。4、 WHERE:对TV3应用WHERE筛选器,...
谁能给我解释一下这条sql语句?
数据字典, 检索一个 对象ID = 名字叫 '[dbo].[T_Class]' 的对象ID。 并且类型是 'U' 的。DROP TABLE [dbo].[T_Class]删除表 [dbo].[T_Class]其实如果你是偷懒的话, 就直接 DROP TABLE [dbo].[T_Class]结果就是, 如果有,就删除, 没有, SQL Server 会抱错。
mybatis源码分析02:执行sql语句
这里得到的boundSql包含了要执行的sql语句,以及传入的参数: 继续跟进query(...)方法:SqlSessionsqlSession=factory.openSession()4 可以看到查询时,先判断缓存中是否存在要查询的记录,如果存在则直接返回缓存中的记录,否则就调用delegate.query(...)进行查询。 delegate是啥呢?这个就是执行具体操作的执行器,CachingExecu...