欢迎来到jOOQ Tuesdays系列。 在本系列中,我们每隔一个月的第三个星期二发布一篇文章,从jOOQ的角度采访我们发现该行业令人兴奋的人。 这包括从事SQL,Java,开放源代码以及其他各种相关主题的人员。

我们很高兴在第六版中与Markus Winand交谈。 Markus是受欢迎的《 SQL Performance Explained》一书的作者,更受欢迎的网站Use The Index卢克(Luke)的作者 ,我们很高兴看到他正在实现另一个特技:

这个网站的目标是什么?

对于modern-sql.com,我的目标是创建一本教科书,并提供有关您在学校或大学中未学过的SQL知识的参考。 有趣的是,有关这些功能的在线手册很少。 它们以两种方式出现:博客文章和供应商文档。 博客文章通常是一次性事件,涉及特定功能或用例。 那里有很多很棒的博客-jOOQ博客就是其中之一 -但我没有推荐我学习所有有关最近的SQL功能的博客 。 另一方面,供应商文档主要是关于语法的参考-甚至常常是一个不好的参考:他们通常根本没有提及标准合规性,并且倾向于遵循“专有功能优先”的方法。

结果是SQL市场非常分散:除了SQL-92外,没有明显的基础可以为所有数据库所共有。 在工作市场上,这一点尤其明显:工作机会要么只需要SQL(意味着良好的旧关系SQL),要么需要具有特定产品的经验。 如今,这几乎是正常现象,没有人对此表示怀疑。 但是,您如何看待这个职位空缺:“ Google Chrome Web Developer”。 Web开发人员无法选择客户端的浏览器。 许多尝试,但失败了。 还记得“针对XYZ优化”吗? 这就是为什么在过去的几十年中,Web开发人员要求浏览器具有标准一致性的原因。 刚启动一个新网站,我可以说CSS的一致性在过去五年中得到了极大的改善。 最终,我希望SQL发生相同的事情。 我希望modern-sql.com引起人们对标准符合SQL的兴趣,以便开发人员也开始要求数据库供应商提供标准符合性。 雄心勃勃的目标。

是否想阐明该运动的背景?

OFFSET最引人注目的问题是它通常用于无效的用例:分页。 在这种情况下,OFFSET用于跳过许多行,以查找先前选择的行之后的行。 但是,按定义,OFFSET不会返回之前选择的行之后的行,而只是丢弃结果的前N行。 巧合的是,如果同时未更改数据,则OFFSET会产生预期的结果-这种情况在开发过程中非常普遍。 但是,一旦添加或删除行,丢弃固定数量的行就无法给出正确的结果。 正确的方法是记住提取的最后一行,并在WHERE子句中使用此数据来选择后面的行。 有关此方法的详细信息,请参见http://use-the-index-luke.com/no-offset 。

除了不能使用OFFSET来实现正确的分页之外,OFFSET还不利于性能。 偏移量错误且缓慢。 你还需要什么? 实际上,我知道OFFSET的唯一有效用例是在SQL中实现SLEEP,而我从不需要。 不幸的是,OFFSET于2011年成为SQL标准。我认为这是最近的SQL历史中最严重的错误,因为它无法纠正。 唯一的好处是它是一项可选功能-供应商无需实现标准一致性。 尽管如此,Oracle和Microsoft最近才在其SQL数据库中添加了OFFSET。

它与其他SQL书籍相比如何?为什么读者应该购买?

我将从第二个问题开始。 首先,您必须知道SQL Performance Explained的全部内容可从http://use-the-index-luke.com/免费获得。 我问的大多数人为什么要买这本书,是因为喜欢该网站。 他们购买了这本书,以支持我在“使用索引”方面的工作,卢克(非常感谢!),或者更重要的是,最终从头到尾阅读了这本书。 我得到的典型答案是:“我认识卢克(Luke)已有多年,并且在那里读过很多文章,但是我最终还是想从头到尾阅读所有内容。”

现在要问的第一个问题是,为什么世界需要另一个SQL性能指标:事实并非如此。 因此,我写了一本很小的书,可以在不到一天的时间内阅读。 我专注于基本概念,这些概念在大多数数据库中都是相同的,并且大胆地跳过了不太常见的特殊情况。 在评论中也最赞赏它的简短性。 另一方面,这本书有时被批评为不完整,可能是因为副标题是“开发人员需要了解SQL性能的所有内容”。 我个人认为这些批评以某种方式证明了我的观点:显然,Java,PHP或.NET开发人员不需要像数据库性能顾问那样了解SQL性能。 为此类读者写作时,您必须跳过很多。

从现在开始的10年后,您将在哪里看到SQL?

我希望SQL:2011的时态功能( 请参阅此处 )在公共开源数据库中也可以普遍使用。 目前,它们仅在商业数据库中可用,即使完整性和标准一致性也有所不同。 我也希望SQL标准找到一种方法来应对当前的趋势,即每个数据库供应商都添加自己的专有JSON函数集。 不幸的是,这可能已经为时已晚。

但是,我最大的希望是,开发人员意识到SQL不会在1992年陷入困境。自那时以来,该标准已添加了许多有用的功能。 大多数数据库都提供了这些功能的很大一部分。 实际上,我们对SQL的看法在1992年陷入困境。

进一步了解Markus的作品

…Markus在会议上发表了他的Modern SQL演讲。 点击此处了解详情:

来自Markus Winand的 PostgreSQL中的现代SQL

翻译自: https://www.javacodegeeks.com/2015/10/jooq-tuesdays-markus-winand-is-on-a-modern-sql-mission.html

jOOQ星期二:Markus Winand执行现代SQL任务相关推荐

  1. jooq 执行sql_jOOQ星期二:Markus Winand执行现代SQL任务

    jooq 执行sql 欢迎来到jOOQ Tuesdays系列. 在本系列文章中,我们每隔一个月的第三个星期二发布一篇文章,从jOOQ的角度采访我们发现该行业令人兴奋的人. 这包括从事SQL,Java, ...

  2. 如何查看Linq to SQL运行时,实际执行的Sql语句

    调试Linq to sql代码是, 如果遇到错误,很难判断错误的原因是什么,如果能够输出实际执行的sql原文,对于我们寻找错误的原因有有很大帮助. 以下是我用到的方法: StringBuilder s ...

  3. laravel中查看执行的SQL语句

    今天想查看laravel框架中执行的SQL语句,百度了一圈,才找到,这文档真心看着不爽,下面上查看方法 DB::connection()->enableQueryLog();$navObj = ...

  4. mysql查看正在执行的sql语句

    有2个方法: 1.使用processlist,但是有个弊端,就是只能查看正在执行的sql语句,对应历史记录,查看不到.好处是不用设置,不会保存. -- use information_schema; ...

  5. SQL Server-聚焦sp_executesql执行动态SQL查询性能真的比exec好?

    前言 之前我们已经讨论过动态SQL查询呢?这里为何再来探讨一番呢?因为其中还是存在一定问题,如标题所言,很多面试题也好或者有些博客也好都在说在执行动态SQL查询时sp_executesql的性能比ex ...

  6. mysql 查询任务_mysql中怎样显示服务器正在执行的sql任务

    查询Oracle正在执行32313133353236313431303231363533e58685e5aeb931333365636636的sql语句及执行该语句的用户 SELECT b.sid o ...

  7. oracle中执行动态sql语句吗,oracle中有没有可动态执行sql语句的函数

    oracle中有没有可动态执行sql语句的函数 关注:233  答案:2  手机版 解决时间 2021-03-05 15:53 提问者祗剩寂寞 2021-03-04 22:38 oracle中有没有可 ...

  8. php执行删除语句代码,ThinkPHP之数据删除和执行原生SQL语句

    一.数据删除 delete() 返回受影响的记录条数 $goods->delete(30);//删除主键值等于30的记录信息 $goods->delete('10,12,14');//删除 ...

  9. Oracle 数据库直接执行本地sql文件、sql脚本实例演示

    @ + sql 文件路径即可执行 sql 文件里的 sql 语句. 实例演示: 我要执行的 sql 文件路径是 C:\Users\Administrator\Desktop\delete.sql , ...

最新文章

  1. 恕我直言,有了这款IDEA插件,你可能只需要写30%的代码...
  2. WIN10系统上,新建AliOS Things项目
  3. js根据身份证号码判断性别和年龄
  4. 怎么去除图像亮度对图像质量评价的影响_图像质量评估指标 SSIM / PSNR / MSE
  5. cad用计算机怎么计算坐标,如何测算CAD图纸坐标测算教程 CAD图纸的坐标怎么计算...
  6. Python 中关于 round 函数的小坑
  7. 【CodeForces - 985D】Sand Fortress (二分,贪心,思维构造,技巧,有坑)
  8. python有序队列_【Python】:拓展Queue实现有序不重复队列
  9. 直面桌面云带来的现状优势
  10. ITIL基础概述与实战案例分析(下)
  11. devops之路rancher安装
  12. 任务型对话(一)—— NLU/SLU(意识识别和槽值填充)
  13. revman软件_meta分析概述及RevMan软件安装教程
  14. Elasticsearch6.x和Kibana6.x的安装
  15. mysql异构迁移_如何利用数据异构实现多级缓存和数据迁移
  16. Excel如何将单元格中的多数字提取出来
  17. 老司机通过后视镜辨别车距 完爆倒车影像功能
  18. 洪水填充算法_计算机图形:洪水填充算法
  19. apk文件以及打包流程
  20. uniapp小程序开发设置系统状态栏高度、全屏背景图设置

热门文章

  1. 天宝营养冲刺深交所:年营收12.5亿 拟募资7亿
  2. 叮咚同城小程序问题:点击发布信息按钮自动闪退到首页的解决方法
  3. PHP 中GET、POST、REQUEST用法
  4. 华为云WeLink端云协同会议是什么?
  5. UEFI原理与编程实践--UEFI系统的启动过程
  6. python实现 Python蟒蛇绘制(嵩天老师 )
  7. 如何快速下载CNCF Logos-收藏
  8. 什么是等级保护?等保二级和三级的区别?
  9. 如何扩大你的心理舒适区?
  10. 电脑网络正常,浏览器连不上网的解决办法