位置: 编程技术 - 正文

SQLServer中SELECT语句的执行顺序

编辑:rootadmin
今天在写一条语句的时候,在查询分析器里边执行 要用s,换用另外一种写法只用少于1s的时间,同事说是因为Sql句语执行顺序的原因。之前看过一点相 关的书,有一点印象,到网上找了资料,学习下。 逻辑查询处理步骤 每个步骤产生一个虚拟表,该虚拟表被用作下一个步骤的输入。只有最后一步生成的表返回给调用者。如 果没有某一子句,则跳过相应的步骤。 1. FROM:对FROM子句中的前两个表执行笛卡尔积,生成虚拟表VT1。 2. ON:对VT1应用ON筛选器。只有那些使<join_condition>为真的行才被插入VT2。 3. OUTER(JOIN):如果指定了OUTER JOIN,保留表中未找到匹配的行将作为外部行添加到VT2,生成VT3。 如果FROM子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到 处理完所有的表为止。 4. 对VT3应用WHERE筛选器。只有使<where_condition>为TRUE的行才被插入VT4。 5. GROUP BY:按GROUP BY 子句中的列列表对VT4中的行分组,生成VT5。 6. CUBE|ROLLUP:把超组插入VT5,生成VT6。 7. HAVING:对VT6应用HAVING筛选器。只有使<having_condition>为TRUE的组才会被插入VT7。 8. SELECT:处理SELECT列表,产生VT8。 9. DISTINCT:将重复的行从VT8中移除,产生VT9。 . ORDER BY:将VT9中的行按ORDER BY子句中的列列表排序,生成一个有表(VC)。 . TOP:从VC的开始处选择指定数量或比例的行,生成表VT,并返回给调用者。 以下是其它网友的补充: 好像自已在书写 SQL 语句时由于不清楚各个关键字的执行顺序, 往往组织的 SQL 语句缺少很好的逻辑, 凭感觉 "拼凑" ( 不好意思, 如果您的 SQL 语句也经常 "拼凑", 那您是不是得好好反省一下呢?, 呵呵). 这样做确实是爽了自己, 可苦了机器, 服务器还需要在我们的杂乱无章的 SQL 语句中寻找它下一句需要执行的关键字在哪里. 效率嘛, 由于我们的感觉神经对秒以下的变化实在不敏感, 暂且就认为自已写的 SQL 顺序无关紧要, "反正没什么变化!", 呵呵.其实服务器对每句 SQL 解析时间都会有详细记录的, 大家可以看一下自已按习惯写的 SQL 和按标准顺序写的SQL解析时间差别有多大. 因此, 建议大家在平时工作中 SQL 语句按标准顺序写, 一是专业, 二是实用, 呵呵, 不过我觉得最主要的是心里感觉舒服. 标准的 SQL 的解析顺序为: (1).FROM 子句, 组装来自不同数据源的数据 (2).WHERE 子句, 基于指定的条件对记录进行筛选 (3).GROUP BY 子句, 将数据划分为多个分组 (4).使用聚合函数进行计算 (5).使用 HAVING 子句筛选分组 (6).计算所有的表达式 (7).使用 ORDER BY 对结果集进行排序 举例说明: 在学生成绩表中 (暂记为 tb_Grade), 把 "考生姓名"内容不为空的记录按照 "考生姓名" 分组, 并且筛选分组结果, 选出 "总成绩" 大于 分的. 标准顺序的 SQL 语句为: select 考生姓名, max(总成绩) as max总成绩 from tb_Grade where 考生姓名 is not null group by 考生姓名 having max(总成绩) > order by max总成绩 在上面的示例中 SQL 语句的执行顺序如下: (1). 首先执行 FROM 子句, 从 tb_Grade 表组装数据源的数据 (2). 执行 WHERE 子句, 筛选 tb_Grade 表中所有数据不为 NULL 的数据 (3). 执行 GROUP BY 子句, 把 tb_Grade 表按 "学生姓名" 列进行分组 (4). 计算 max() 聚集函数, 按 "总成绩" 求出总成绩中最大的一些数值 (5). 执行 HAVING 子句, 筛选课程的总成绩大于 分的. (7). 执行 ORDER BY 子句, 把最后的结果按 "Max 成绩" 进行排序. 好了,看了这些之后,我相信大家都知道了SQL中select语句的执行顺序了吧!哈哈!

推荐整理分享SQLServer中SELECT语句的执行顺序,希望有所帮助,仅作参考,欢迎阅读内容。

SQLServer中SELECT语句的执行顺序

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

Sqlserver 常用日期时间函数 MSSQLServer中文版的预设日期datetime格式是yyyy-mm-ddhh:mm:ss.mmm长短日期格式--短日期格式:yyyy-m-dSELECTREPLACE(CONVERT(varchar(),getdate(),),N'-0','-')--长日期格式:y

SqlServer下通过XML拆分字符串的方法 DECLARE@idocint;DECLARE@docxml;set@doc=cast('RootitemProjID'+replace(@SelectedProjectArray,',','/ProjID/itemitemProjID')+'/ProjID/item/Root'asxml)EXECsp_xml_preparedocument@IdocOUTPUT,@docSELECTProjID

.Net下执行sqlcmd的方法 如下代码:被的调用方法:publicstaticstringExeCommand(stringcommandText){Processp=newProcess();p.StartInfo.FileName="cmd.exe";p.StartInfo.UseShellExecute=false;p.StartInfo.RedirectStandardI

标签: SQLServer中SELECT语句的执行顺序

本文链接地址:https://www.jiuchutong.com/biancheng/349554.html 转载请保留说明!

上一篇:sqlserver 存储过程分页代码第1/2页(sqlserver存储过程怎么查看)

下一篇:Sqlserver 常用日期时间函数(sqlserver2019的使用)

  • 预付款发票能入账吗
  • 社群运营收入怎么样
  • 分公司亏损总公司怎么办
  • 实际发生应收账款坏账时的会计处理
  • 公司员工受伤怎么报工伤
  • 专项申报的类别
  • 固定资产加速折旧法
  • 出售多余材料会计科目
  • 向境外支付特许权使用费免征增值税
  • 供应商发出货物,将发货单提交给
  • 商贸公司购买的手提袋怎么入账
  • 企业因购买材料开出的商业汇票属于什么会计科目
  • 拨款和支出的区别
  • 奖金多发退回时间怎么算
  • 改扩建要计提折旧吗
  • 资产负债表属于会计报表吗
  • 最新定额是哪年
  • 小规模购买财务软件怎么做分录
  • 制造费用月末需要结转吗
  • 融资租赁和融资性售后回租的区别
  • 购进一批材料,材料已经入库
  • 外购集体福利用交税吗
  • 企业怎么才能开100万发票
  • 税率税额是星号什么意思
  • 其他权益性无形资产的进项税额抵扣
  • 建筑行业简易征收税率是5%吗?
  • 行政单位结转结余形成的原因
  • 水利基金减免了还用计提吗
  • 公司购买空调计入什么费用
  • PHP:curl_share_setopt()的用法_cURL函数
  • 高温补贴需要缴纳社会保险费吗
  • 职工教育经费的列支范围
  • 正爬上唐娜·诺克沙滩的灰海豹,英格兰北林肯郡 (© Frederic Desmette/Minden Pictures)
  • laravel注入
  • 乐吾实验学校网站
  • yii2框架从入门到精通pdf
  • 面试学弟学妹问题
  • 如何使用openAI总结小说内容
  • 床垫可以开专票抵扣吗
  • 小规模如何申报增值税
  • 购置固定资产进项税率
  • 子公司认定消费税需要披露信息
  • 为员工购买意外险会计处理
  • 赔偿客户款应该怎么记账
  • 损益表填制
  • 计提工资附什么单据
  • 通行费发票如何勾选
  • 进项税额转出和红字冲销区别
  • sql server 用法
  • 一般纳税人增值税怎么算
  • 租金收入会计科目
  • 银行预留印鉴是啥
  • 代收代缴的水电费怎么开票
  • 备用金怎么计入明细账
  • 空调抵扣进项税
  • 汇率调节主要手段
  • 《关于工资总额组成的规定》第四条
  • 税金及附加没有设置二级科目,有啥影响吗
  • 已经做账发票退款怎么办
  • mysql 常用
  • windows7内部版本7601激活密钥
  • ubuntu虚拟机怎么联网
  • linux查看sh
  • 物联网1.0 2.0 3.0
  • win8微软拼音输入法打不出中文
  • fedora update-grub
  • windows阻止
  • node.js安装教程详细
  • python在web上的应用
  • 第二次约会聊天没多少可以聊的,经常冷场
  • me分析方法
  • vue-cli 使用 报错
  • nodejs基础知识
  • androidstudio手机编程软件
  • 成都所见所得科技有限公司是什么平台
  • 江苏专家库申报在哪个网站
  • 比亚迪车载物联网卡
  • 环保税的税率是怎么算的
  • 江苏契税补贴怎么领取
  • 转租土地合法吗现在
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设