DBA必备的SQL习惯.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DBA必备的SQL习惯

DBA必备的SQL好习惯 带来一笔大财富 2012年01月13日10:12 来源: HYPERLINK /MR_ke/archive/2011/05/29/2062085.html \t _blank 博客?作者:MR_ke 编辑: HYPERLINK /user/%cd%f5%d3%f1%d4%b2/ \t _blank 王玉圆? HYPERLINK /a2012/0113/1302/000001302204_all.shtml \l articlecomment \t _self 我要评论(0) 标签:? HYPERLINK /tag/488_1.shtml \t _blank SQL Server   【IT168 评论】我们做软件开发的,大部分人都离不开跟数据库打交道,特别是erp开发的,跟数据库打交道更是频繁,存储过程动不动就是上千行,如果数据量大,人员流动大,那么我么还能保证下一段时间系统还能流畅的运行吗?那么还能保证下一个人能看懂我么的存储过程吗?那么我结合公司平时的培训和平时个人工作经验和大家分享一下,希望对大家有帮助。   要知道sql语句,我想我们有必要知道sqlserver查询分析器怎么执行我么sql语句的,我么很多人会看执行计划,或者用profile来监视和调优查询语句或者存储过程慢的原因,但是如果我们知道查询分析器的执行逻辑顺序,下手的时候就胸有成竹,那么下手是不是有把握点呢?   一:查询的逻辑执行顺序   (1) FROM left_table   (2) ON join_condition   (3) join_type JOIN right_table   (4) WHERE where_condition   (5) GROUP BY group_by_list   (6) WITH {cube | rollup}   (7) HAVING having_condition   (8) SELECT (9) DISTINCT (11) top_specification select_list   (10) ORDER BY order_by_list   标准的SQL 的解析顺序为:   (1).FROM 子句 组装来自不同数据源的数据   (2).WHERE 子句 基于指定的条件对记录进行筛选   (3).GROUP BY 子句 将数据划分为多个分组   (4).使用聚合函数进行计算   (5).使用HAVING子句筛选分组   (6).计算所有的表达式   (7).使用ORDER BY对结果集进行排序   二 执行顺序:   1.FROM:对FROM子句中前两个表执行笛卡尔积生成虚拟表vt1   2.ON:对vt1表应用ON筛选器只有满足 join_condition 为真的行才被插入vt2   3.OUTER(join):如果指定了 OUTER JOIN保留表(preserved table)中未找到的行将行作为外部行添加到vt2 生成vt3如果from包含两个以上表则对上一个联结生成的结果表和下一个表重复执行步骤和步骤直接结束   4.WHERE:对vt3应用 WHERE 筛选器只有使 where_condition 为true的行才被插入vt4   5.GROUP BY:按GROUP BY子句中的列列表对vt4中的行分组生成vt5   6.CUBE|ROLLUP:把超组(supergroups)插入vt6 生成vt6   7.HAVING:对vt6应用HAVING筛选器只有使 having_condition 为true的组才插入vt7   8.SELECT:处理select列表产生vt8   9.DISTINCT:将重复的行从vt8中去除产生vt9   10.ORDER BY:将vt9的行按order by子句中的列列表排序生成一个游标vc10   11.TOP:从vc10的开始处选择指定数量或比例的行生成vt11 并返回调用者   看到这里,那么用过linqtosql的语法有点相似啊?如果我们我们了解了sqlserver执行顺序,那么我们就接下来进一步养成日常sql好习惯,也就是在实现功能同时有考虑性能的思想,数据库是能进行集合运算的工具,我们应该尽量的利用这个工具,所谓集合运算实际就是批量运算,就是尽量减少在客户端进行大数据量的循环操作,而用SQL语句或者存储过程代替。   三、只返回需要的数据   返回数据到客户端至少需要数据库提取数据、网络传输数据、客户端接收数据以及客户端处理数据等环节,如果返回不需要的数据,就会增加 HYPERLINK /list/b/0402_1.shtml \t _blank \o 服务器 服务器、网络和客户端的无效劳动,其害

文档评论(0)

peain + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档