SQL语言艺术
SQL语言艺术
Stéphane Faroult, Peter Robson
出版时间:2008年03月
“一部SQL力作。对于在其他书中止步于理论的难点,本书提供了实际的经验技巧,效果卓然。”
——Sean Hull,资深咨询顾问,Heavyweight互联网集团
“一本真正‘聪明’的SQL书,注重实践而非课堂上的理论,解决数据库专业人员遇到的问题。”
——Anthony Molinaro,首席数据库工程师,Wireless Generation公司
你是否把数据库应用看作一场战役?
你是否把数据看作一排排需要筛选并打退的敌军纵队?
SQL专家Stéphane Faroult就是这么做的。
《SQL语言艺术》的作者Stéphane Faroult借用《孙子兵法》的智慧处理 SQL性能方面的问题。开发数据库应用好比一场战役,设计即战略,而每次数据库访问就是与敌军在战术上的对决。
Stéphane对SQL性能问题的论述,视角独特,一丝不苟。如何才能更好地使用SQL?本书结?合一线实践的案例,强调了:
应从最开始就综合设计数据库和应用的性能。“只强调某个最重要方面的设计是错误的”。
应避免只考虑单个SQL语句。“关注总的目标,SQL语句再好也挽救不了糟糕的处理流程”。
必须明白为哪些字段建立索引、为何建立索引。“索引过多是设计不确定的表现”。
Stéphane还对你的实际工作提出了具体建议。九种SQL经典查询方案,以及对其性能影响的讨论,非常便于实践。书中有一章专门讨论树状结构,可帮助你解决层次结构数据的问题。另外,当你必须基于别人的数据库设计进行工作时,“精于计谋:挽救响应时间”这一章会助你成功。
Stéphane Faroult经营着RoughSea公司,从事数据库咨询业务,致力于帮助客户从数据库投资中获得最佳性能。他的SQL经验开始于1983年。Oracle法国的第一个性能及调优课程就是他1987年编写的。
  1. 目录
  2. 前言 I
  3. 1 制定计划:为性能而设计 1
  4. 数据的关系视图 2
  5. 规范化的重要性 4
  6. 有值、无值、空值 11
  7. 限用Boolean型字段 14
  8. 理解子类型(Subtype) 15
  9. 约束应明确声明 17
  10. 过于灵活的危险性 18
  11. 历史数据的难题 19
  12. 设计与性能 21
  13. 处理流程 22
  14. 数据集中化(Centralizing) 23
  15. 系统复杂性 24
  16. 小结 25
  17. 2 发动战争:高效访问数据库 27
  18. 查询的识别 28
  19. 保持数据库连接稳定 29
  20. 战略优先于战术 31
  21. 先定义问题,再解决问题 32
  22. 保持数据库Schema稳定 33
  23. 直接操作实际数据 34
  24. 用SQL处理集合 34
  25. 动作丰富的SQL语句 35
  26. 充分利用每次数据库访问 36
  27. 接近DBMS核心 37
  28. 只做必须做的 41
  29. SQL语句反映业务逻辑 42 把逻辑放到查询中 42
  30. 一次完成多个更新 43
  31. 慎用自定义函数 44
  32. 简洁的SQL 46
  33. SQL的进攻式编程 48
  34. 精明地使用异常(Exceptions) 50
  35. 3 战术部署:建立索引 55
  36. 找到“切入点” 56
  37. 索引与目录 59
  38. 让索引发挥作用 60
  39. 函数和类型转换对索引的影响 62
  40. 索引与外键 67
  41. 同一字段,多个索引 69
  42. 系统生成键 70
  43. 索引访问的不同特点 72
  44. 4 机动灵活:思考SQL语句 75
  45. SQL的本质 76
  46. 掌握SQL艺术的五大要素 84
  47. 过滤 89
  48. 5 了如指掌:理解物理实现 105
  49. 物理结构的类型 106
  50. 冲突的目标 108
  51. 把索引当成数据仓库 109
  52. 记录强制排序 113
  53. 数据自动分组(Grouping) 115
  54. 分区是双刃剑 119
  55. 分区与数据分布 120
  56. 数据分区的最佳方法 121
  57. 预连接表 123
  58. 神圣的简单性 124
  59. 6 锦囊妙计:认识经典SQL模式 127
  60. 小结果集,直接条件 129
  61. 小结果集,间接条件 137
  62. 多个宽泛条件的交集 138
  63. 多个间接宽泛条件的交集 140
  64. 大结果集 146
  65. 基于一个表的自连接 147
  66. 通过聚合获得结果集 150
  67. 基于日期的简单搜索或范围搜索 156
  68. 结果集和别的数据存在与否有关 161
  69. 7 变换战术:处理层次结构 167
  70. 小结果集,直接条件 129
  71. 小结果集,间接条件 137
  72. 多个宽泛条件的交集 138
  73. 多个间接宽泛条件的交集 140
  74. 大结果集 146
  75. 基于一个表的自连接 147
  76. 通过聚合获得结果集 150
  77. 基于日期的简单搜索或范围搜索 156
  78. 结果集和别的数据存在与否有关 161
  79. 8 孰优孰劣:认识困难,处理困难 199
  80. 看似高效的查询条件 200
  81. 抽象层 202
  82. 分布式系统 205
  83. 动态定义的搜索条件 208
  84. 9 多条战线:处理并发 225
  85. 数据库引擎作为服务提供者 226
  86. 并发修改数据 231
  87. 10 集中兵力:应付大数据量 247
  88. 增长的数据量 248
  89. 数据仓库 264
  90. 11 精于计谋:挽救响应时间 279
  91. 数据的行列转换 280
  92. 基于变量列表的查询 294
  93. 基于范围的聚合 297
  94. 一般规则,最后使用 299
  95. 查询与列表中多个项目相符的记录 301
  96. 最佳匹配查询 304
  97. 优化器指令 305
  98. 12 明察秋毫:监控性能 307
  99. 数据库速度缓慢 308
  100. 服务器负载因素 310
  101. 何谓“性能优良” 311
  102. 从业务任务角度思考 317
  103. 执行计划 319
  104. 合理运用执行计划 328
  105. 总结:影响性能的重要因素 330
  106. Photo Credits 333
  107. 索引 335
书名:SQL语言艺术
出版时间:2008年03月
书号:978-7-121-05834-9
原版书出版商:O'Reilly Media
Stéphane Faroult
 
Stéphane Faroult从1983年开始接触关系数据库。Oracle法国成立早期他即加入(此前是短暂的IBM经历和渥太华大学任教生涯),并在不久之后对性能和调优产生了兴趣。1988年他离开了Oracle,此后一年间,他进行调整,并研究过运筹学。之后,他重操旧业,一直从事数据库咨询工作,并于1998年创办了RoughSea公司(http://www. roughsea.com)。
Stéphane Faroult出版了Fortran Structuré et Méthodes Numériques一书(法语,Dunod出版社,1986, 与Didier Simon合作),并在Oracle Scene和Select(分别为英国和北美Oracle用户组杂志)以及Oracle杂志在线版上发表了许多文章。他还是美国、英国、挪威等众多用户组大会的演讲者。
Stéphane Faroult在1993年第一次发现了关系数据库和SQL语言。在IBM短暂工作了一段时间和在渥太华大学教了一阵书之后,他在Oracle法国公司的早期就加入了该公司,并且很快就培养起了对于性能和调优方面的兴趣。在1988年离开Oracle公司之后,他短暂地尝试过转型,并做了一些运营方面的研究,但在一年后,他再一次屈服于关系数据库的诱惑。从那以后,他一直在从事数据库咨询工作,并于1998年创办了RoughSea公司。

 
 
Peter Robson
 
Peter Robson毕业于达拉谟大学地质专业(1968年),然后在爱丁堡大学任教,并于1975年获得地质学研究型硕士学位。在希腊度过了一段地质学家生涯之后,他开始在纽卡斯尔大学专攻地质和医学数据库。
他使用数据库始于1977年,1981年开始使用关系数据库,1985年开始使用Oracle,这期间担任过开发工程师、数据架构师、数据库管理员等角色。1980年,Peter参加了英国地质普查,负责指导使用关系数据库管理系统。他擅长SQL系统,以及从组织级到部门级的数据建模。Peter多次出席英国、欧洲、北美的Oracle数据库大会,在许多数据库专业杂志上发表过文章。他现任英国Oracle用户组委员会主任,可通过peter.robson@justsql.com联系他。