搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
Microsoft SQL Server 2008技术内幕:T-SQL查询
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787121117350
  • 作      者:
    Itzik Ben-Gan[等]著
  • 出 版 社 :
    电子工业出版社
  • 出版日期:
    2010
收藏
编辑推荐
    精通T-SQL高级查询和性能优化的幕后机制,编写更快,更具伸缩性的代码。作者团队用精深而富有洞察力的T-SQL知识帮助开发人员解决最棘手的基于集合的查询和性能优化问题,加深开发人员对T-SQL体系结构和内部处理细节的理解。通过各种实用方法和高级技术提高代码质量。<br>    你将学到:<br>    从面向过程的编程到基于集合的语言及思维逻辑的转变;使用自顶向下的方法论优化查询;根据算法复杂度预测性能;比较各种数据聚合技术,包括新的分组集;管理数据操作(插入、删除、更新和合并),提高性能;针对分区表编写更有效的查询;处理图、树和层次结构,以及递归查询;通过纯逻辑难题来磨练解决问题的能力。
展开
作者简介
    Itzik Ben-Gan,是Solid Quality Mentors的首席顾问和创始人。99年以来一直是SQL Server方面的Microsoft MvP。Itzik在世界各地从事T-SQL查询.编程和查询优化相关的培训和咨询工作。他为SQL Server Magazine和MSDN撰写了很多文章,并受邀在许多业界的专题会议上发表演讲。包括Tech-Ed、DevWeek、PASS和SQL Server Magazine Connections。<br>    Lubor Kollar,是微软公司SQL Server Customer Advisory Team的Group Program Manager。从事世界范围内最具挑战性的SQL Server开发。他有超过1 3年SQL Server开发经验。<br>    Dejan Sarka,是认证讲师(MCT)、微软认证I传家(MCITP)、微软认证数据库管理员(MCDBA)、SQL Server MVP,从事开发数据库和商业智能解决方案。他也是Solid Quality Mentors的顾问,出席过Tech. Ed PASS和SQL Server DevCon。<br>    Steve Kass,博士,是SQL Server MVP,也是数学和计算机科学的教授。他为SQL Server Magazine撰写文章,并曾在SQL Server Magazine Connections上发表演讲。
展开
内容介绍
《Microsoft SQL Server 2008技术内幕:T-SQL查询》全面深入地介绍了Microsoft SQL Server 2008中高级T-SQL查询、性能优化等方面的内容,以及SQL Server 2008新增加的一些特性。主要内容包括SQL的基础理论、查询优化、查询算法及复杂度,以及在使用子查询、表表达式、排名函数、数据聚合和透视转换、TOP和APPLY、数据修改、分区表、特殊数据结构等实际应用时会遇到的各种高级查询问题和解决方案。<br>    作为一本讲述T-SQL高级查询的专业图书,《Microsoft SQL Server 2008技术内幕:T-SQL查询》旨在结合实践中的各种常见问题,教读者如何用SQL作为语言工具来思考问题,揭示基于集合查询的强大威力。《Microsoft SQL Server 2008技术内幕:T-SQL查询》内容丰富、文字简洁明快,列举的实例具有一定的难度,而且实用性很强,可以把它们作为解决实际问题的标准模式。阅读《Microsoft SQL Server 2008技术内幕:T-SQL查询》,可以充分地理解T-SQL语言和良好的编程实践,学会如何编写更加有效而强大的查询语句。
展开
精彩书摘
    分析执行计划<br>    执行计划是优化器生成的用于确定如何处理一个给定查询的“工作计划”。一个计划包含一组运算符,通常按照特定的顺序来应用这些运算符。一些运算符可以在它们前面的运算符还在处理时被应用。一些运算符可能应用多次。而且,如果优化器选择了并行计划(parallel plan),那么计划的一些分支还有可能会被并行调用。在计划中,优化器负责决定查询以什么顺序来访问表、使用哪些索引和应用什么样的访问方法、使用哪种联接算法等等。实际上,对于给定的查询,优化器会评估多个执行计划,并从生成的多个计划中选择一个开销最低的计划。注意,SQL server可能不会为给定的查询生成所有可能的执行计划。如果总是要生成所有的执行计划,那么优化过程可能会太长。SQL Serer将根据一些因素(如查询所涉及到的表的长度)来计算优化过程的临界值。一种临界值是基于时间的,SQL Server不会在优化上花费比该时间临界值更长的时间。还有一种临界值是基于开销的,也就是说,如果找到一个开销比该临界值更低的计划,就认为这个计划“足够好”,这时就会停止优化,并使用该计划。<br>    在这两本书中,会经常分析查询的执行计划。这一节和下一节(“索引优化”)将介绍相关的背景知识,帮助你理解那些涉及分析执行计划的讨论。但本节的目的不是让你熟悉所有可能的运算符,而是让你了解分析执行计划的技巧。在“索引优化”一节中将介绍与索引有关的运算符,在本书的后面还将详细解释其他的运算符,例如,与联接有关的运算符将在第7章“联接和集合运算”中介绍。图形化的执行计划<br>    这两本书广泛使用了图形化的执行计划。在SSMS中既可以得到估计的执行计划(按Ctrl+L键),也可以在生成查询输出的同时得到实际的执行计划(按Ctrl+M键)。不过,这两种计划通常都是一样的,记住,执行计划是在查询执行之前生成的。然而,当请求估计的计划时,查询根本不会运行。很明显,有些测量数据只在运行时才能收集(例如,每个运算符返回的实际行数,以及运算符的实际执行次数)。在估计的计划中,可以看到一些估计的测量值,这些值只有在运行时才能收集到真实的数据,而实际的计划则会显示实际的数据和一些相同的估计值。<br>    ……
展开
目录
序言 I<br>致谢III<br>前言 V<br>第1章 逻辑查询处理<br>1.1 逻辑查询处理的各个阶段<br>1.1.1 逻辑查询处理阶段简介<br>1.2 客户/订单场景下的查询示例<br>1.3 逻辑查询处理阶段详解<br>1.3.1 步骤1:FROM阶段<br>1.3.2 步骤2:WHERE阶段<br>1.3.3 步骤3:GROUP BY阶段 <br>1.3.4 步骤4:HAVING阶段<br>1.3.5 步骤5:SELECT阶段<br>1.3.6 步骤6:排序用的ORDER BY阶段<br>1.4 逻辑查询处理的深入内容<br>1.4.1 表运算符<br>1.4.2 OVER子句<br>1.4.3 集合运算符<br>1.5 总结<br><br>第2章 集合论和谓词逻辑<br>2.1 自然语言表述到数学表示的转换<br>2.1.1 严格定义(well-Definedness)<br>2.1.2 相等、恒等和同一性 <br>2.1.3 数学命名约定 <br>2.1.4 数字<br>2.1.5 上下文<br>2.1.6 函数、参数和变量 <br>2.1.7 指令和算法<br>2.2 集合论<br>2.2.1 集合的标记方法<br>2.2.2 集合的严格定义<br>2.2.3 论域<br>2.2.4 真实性<br>2.2.5 罗素悖论(Russell s Paradox) <br>2.2.6 有序对、元组和笛卡尔积<br>2.2.7 空集<br>2.2.8 集合的特征函数<br>2.2.9 集合的基数(Cardinality)<br>2.2.10 顺序<br>2.2.11 集合运算符<br>2.2.12 集合论的推广<br>2.3 谓词逻辑<br>2.3.1 编程语言中的逻辑功能<br>2.3.2 命题和谓词<br>2.3.3 排中律<br>2.3.4 与、或、非运算<br>2.3.5 逻辑等价<br>2.3.6 逻辑蕴含<br>2.3.7 量化(Quantification)<br>2.3.8 替代和推广<br>2.4 关系<br>2.4.1 自反性、对称性和传递性<br>2.5 一个实际的应用<br>2.6 总结<br><br>第3章 关系模型<br>3.1 关系模型简介<br>3.1.1 关系、元组和类型<br>3.1.2 关系模型:快速摘要<br>3.2 关系代数和关系计算<br>3.2.1 基本运算符<br>3.2.2 关系代数<br>3.2.3 Codd提出的8个原始关系运算符<br>3.2.4 关系演算<br>T-SQL支持<br>3.3 数据完整性<br>3.3.1 声明式约束<br>3.3.2 实施完整性的其他方法<br>3.4 数据库正规化和其他设计主题<br>3.4.1 解决函数依赖的范式<br>3.4.2 更高级的范式<br>3.4.3 反规范化(Denormalization)<br>3.4.4 一般化和特殊化<br>3.5 总结<br><br>第4章 查询优化<br>4.1 本章用到的样本数据<br>4.2 优化方法论 <br>4.2.1 分析实例级别的等待 <br>4.2.2 关联等待和队列<br>4.2.3 确定行动方案<br>4.2.4 细化到数据库/文件级别<br>4.2.5 细化到进程级别<br>4.2.6 优化索引和查询<br>4.3 查询优化的工具  <br>4.3.1 查询执行计划的缓存  <br>4.3.2 清空缓存<br>4.3.3 动态管理对象<br>4.3.4 STATISTICS <br>4.3.5 测量查询的运行时间<br>4.3.6 分析执行计划<br>4.3.7 图形化的执行计划<br>4.3.8 提示(Hint)<br>4.3.9 跟踪/Profiler<br>4.3.10 数据库引擎优化顾问<br>4.3.11 数据收集和管理数据仓库<br>4.3.12 使用SMO来复制统计信息<br>4.4 索引优化<br>4.4.1 表和索引的结构<br>4.4.2 索引访问方法<br>4.4.3 索引策略的分析<br>4.4.4 碎片<br>4.4.5 分区<br>4.5 准备样本数据<br>4.5.1 数据准备<br>4.5.2 TABLESAMPLE2<br>4.6 基于集合的方法和迭代/过程方法的比较,以及一个优化练习2<br>4.7 总结<br><br>第5章 算法和复杂性<br>5.1 你有一个1夸特的硬币吗?<br>5.1.1 如何从零钱罐中取回1夸特钱<br>5.1.2 有时零钱罐中没有1夸特的硬币<br>5.2 如何度量算法(How Algorithms Scale)<br>5.2.1 二次缩放(Quadratic Scaling)的一个例子<br>5.2.2 具有线性复杂度的算法<br>5.2.3 指数和超指数复杂度<br>5.2.4 次线性(sublinear)复杂度<br>5.2.5 常量复杂度<br>5.2.6 复杂度的技术定义<br>5.2.7 复杂度的比较<br>5.3 经典算法和算法策略<br>5.3.1 排序算法<br>5.3.2 字符串查找<br>5.4 一个实际的应用程序<br>5.4.1 识别测量数据的趋势<br>5.4.2 LISLP算法的复杂度<br>5.4.3 用T-SQL解决最长上升子序列的长度问题<br>5.5 总结<br><br>第6章 子查询、表表达式和排名函数<br>6.1 子查询<br>6.1.1 独立子查询<br>6.1.2 相关子查询<br>6.1.3 行为不当的子查询<br>6.1.4 不常用的谓词<br>6.2 表表达式(Table Expressions)<br>6.2.1 派生表<br>6.2.2 公用表表达式<br>6.3 分析排名函数<br>6.3.1 行号<br>6.3.2 排名和密集排名(Dense Rank)<br>6.3.3 组号(Tile Number)<br>6.4 数字辅助表<br>6.5 缺失范围和现有范围(也称为间断和孤岛)<br>6.5.1 缺失范围(间断)<br>6.5.2 现有范围(孤岛)<br>6.6 总结<br><br>第7章 联接和集合运算<br>7.1 联接<br>7.1.1 旧语法和新语法<br>7.1.2 基本联接类型<br>7.1.3 其他的联接分类 <br>7.1.4 上一年度的滑动合计<br>7.1.5 联接算法<br>7.1.6 拆分元素<br>7.2 集合运算 <br>7.2.1 UNION <br>7.2.2 EXCEPT  <br>7.2.3 INTERSECT <br>7.2.4 集合运算的优先级 <br>7.2.5 在集合运算中使用INTO <br>7.2.6 避开不支持的逻辑阶段 <br>7.3 总结 <br><br>第8章 数据聚合和透视 <br>8.1 OVER 子句 <br>8.2 决胜属性(Tiebreaker) <br>8.3 连续聚合 <br>8.3.1 累积聚合(Cumulative Aggregation) <br>8.3.2 滑动聚合(Sliding Aggregation)<br>8.3.3 年初至今(YTD)<br>8.4 透视转换(Pivoting)35<br>8.4.1 透视转换属性35<br>8.4.2 关系除法 <br>8.4.3 聚合数据 <br>8.5 逆透视转换<br>8.6 自定义聚合<br>8.6.1 使用透视转换的自定义聚合 <br>8.6.2 用户定义聚合函数(UDA,User Defined Aggregate) <br>8.6.3 专用解决方案<br>8.7 直方图(Histogram)<br>8.8 分组因子 <br>8.9 分组集 <br>8.9.1 样例数据 <br>8.9.2 GROUPING SETS从属子句 <br>8.9.3 CUBE从属子句 <br>8.9.4 ROLLUP从属子句<br>8.9.5 分组集代数 <br>8.9.6 GROUPING_ID函数 <br>8.9.7 保存分组集<br>8.9.8 排序 <br>8.10 总结<br><br>第9章 TOP和APPLY <br>9.1 SELECT TOP <br>9.1.1 TOP和确定性 <br>9.1.2 TOP和输入表达式 <br>9.1.3 TOP和修改 <br>9.1.4 增强的TOP <br>9.2 APPLY <br>9.3 使用TOP和APPLY解决常见问题 <br>9.3.1 每组中的TOP n <br>9.3.2 匹配当前值和前一个值<br>9.3.3 分页<br>9.4 逻辑转换 <br>9.5 总结<br><br>第10章 数据修改<br>10.1 插入数据<br>10.1.1 增强的VALUES子句<br>10.1.2 SELECT INTO<br>10.1.3 BULK行集提供程序<br>10.1.4 按最小方式记录日志的操作  <br>10.1.5 INSERT EXEC<br>10.1.6 序列机制45<br>10.2 删除数据<br>10.2.1 TRUNCATE与DELETE<br>10.2.2 删除包含重复数据的行 <br>10.2.3 基于联结的DELETE<br>10.3 更新数据<br>10.3.1 基于联结的UPDATE<br>10.3.3 更新大值数据类型 <br>10.3.3 用SELECT和UPDATE语句进行赋值 <br>10.4 合并数据 <br>10.4.1 MERGE语句基础<br>10.4.2 额外增加一个谓词<br>10.4.3 多个WHEN子句 <br>10.4.4 WHEN NOT MATCHED BY SOURCE子句 <br>10.4.5 MERGE Values <br>10.4.6 MERGE与触发器 <br>10.5 OUTPUT子句 <br>10.6 总结 <br><br>第11章 查询分区表 <br>11.1 在SQL Server中进行分区 <br>11.1.1 分区视图 <br>11.1.2 分区表 <br>11.2 总结 <br><br>第12章 图、树、层次结构和递归查询<br>12.1 术语<br>12.1.1 图<br>12.1.2 树<br>12.1.3 层次结构<br>12.2 应用场景<br>12.2.1 员工组织图 <br>12.2.2 材料清单(BOM)<br>12.2.3 道路系统<br>12.3 迭代/递归<br>12.3.1 下属<br>12.3.2 祖先<br>12.3.3 带有路径枚举的子图/子树<br>12.3.4 排序<br>12.3.5 环<br>12.4 具体化路径<br>12.4.1 维护数据<br>12.4.2 查询<br>12.5 使用HIERARCHYID数据类型的具体化路径5 <br>12.5.1 维护数据<br>12.5.2 查询<br>12.5.3 使用HIERARCHYID的其他方面<br>12.6 嵌套集合<br>12.6.1 分配左值和右值<br>12.6.2 查询<br>12.7 传递闭包(Transitive Closure)<br>12.7.1 有向无环图<br>12.7.2 无向有环图<br>12.8 总结<br>索引
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证