sql 每个商品只取10条
一段时间以来,我们一直在jOOQ博客上发布有关Java和SQL的博客 。 多年来,在研究有趣的博客主题时,我们在博客圈中发现了许多SQL瑰宝,这些启发了我们的工作和对SQL的热情。
今天,我们向您提供10篇文章列表,我们认为您绝对应该阅读。 在列表的最后,您将同意:
- SQL很棒
- SQL很疯狂
…或可能两者兼而有之。 顺序不分先后:
1.乔·塞尔科(Joe Celko):“我们分开了:关系部门SQL”
关系除法是关系代数中一个非常强大的概念。 它回答如下问题:
给我所有完成给定课程的学生
不幸的是,除法在SQL中没有任何直接等效项。 我们希望会有一个类似的条款
TABLE_A
DIVIDE BY TABLE_B
ON [ some predicate ]
但是,您可以通过各种方式来表示SQL的划分。
- 阅读Joe的文章:“ 我们分立:关系部门SQL ”
2. Alex Bolenok:“新年快乐!”
Alek Bolenok(又名Quassnoi )写了很多有关SQL的有趣事情的博客,但他每年的最重要贡献之一就是他的“新年快乐”系列。 Alek将“漂亮”(漂亮在旁观者的眼中)画出,并且肯定会在您SQL控制台中留下令人印象深刻的图片。 例如:
- 阅读Alek的“ SQL的圣诞树 ”
3. Markus Winand:“聚簇数据:索引的第二力量”
Markus Winand是受欢迎的《 SQL Performance Explained》一书的作者,您也可以在他的博客“ Use the Index Luke ”中阅读其中的部分内容。 书中和本页上都有大量令人难以置信的非常有用的知识,但是,SQL最具启发性和整洁性的技巧之一就是了解“覆盖索引”,“聚集索引”或“仅索引扫描”
- 阅读Markus的文章:“ 聚类数据:索引的第二力量 ”
4. Dimitri Fontaine:“了解窗口函数”
窗口函数之前有SQL,窗口函数之后有SQL
窗口函数是SQL最强大和未充分利用的功能。 它们在所有商业数据库,PostgreSQL中以及不久之后在Firebird 3.0中都可用。 我们本人已经在博客上写过几次关于窗口函数的文章 ,但是Dimitri Fontaine撰写了关于它们真正是什么以及它们如何工作的最好的摘要和解释之一。
- 阅读Dimitri的文章:“ 了解窗口函数 ”
5. Lukas Eder:“ Java开发人员在编写SQL时常犯的10个错误”
一些广告来宣传我们自己的作品。 我们收集了Java开发人员在编写SQL时犯的10个最常见的错误。 这些错误实际上甚至不是Java开发人员所特有的,任何开发人员都可能发生。 这篇文章在我们的博客上引起了很大的关注,其中必须有一些重大事实。
- 阅读Lukas的文章:“ Java开发人员在编写SQL时常犯的10个错误 ”
6.AndrásGábor的“ SQL分页技术”
直到最近,在商业数据库(例如Oracle,SQL Server,DB2和Sybase)中,实现偏移分页还是相当困难的,这些商业数据库没有MySQL / PostgreSQLLIMIT .. OFFSET
子句的等效功能。 分页可以被模拟,但是,有很多技术可以做到这一点。 选择正确的技术对于性能至关重要。 如果您使用的是Oracle 11g或更低版本,则应在ROWNUM
过滤:
- 阅读András的“ SQL分页技术 ”
附带说明一下,您可能应该考虑完全不使用OFFSET
。 有关NO OFFSET运动的详细信息,请阅读…
7. Markus Windand:“我们需要工具支持分页设置”
如果您考虑OFFSET
分页,从技术角度来看,这实际上是一个相当愚蠢的事情,而从业务角度来看,这却是无用的事情。 这就是为什么。
从技术角度看...
...您需要应用过滤,分组和排序对数据的大量,跳跃和投掷了所有的数据,直到你达到所关心的第一行的偏移之前出现。 鉴于...,这会浪费很多资源。
从业务角度看...
…也许第1-3页很有趣,但是为用户提供导航到第1337页绝对没有任何意义。经过一定的偏移后,从业务角度而言,偏移的含义已消失。 您也可以显示随机无序的数据样本。 用户不会注意到。 可能的是,当您在Google搜索结果上到达较高的页面时,就会发生这种情况。 随机的东西。
或在reddit上。 在那里,您已经在第一页上看到了一些随机的东西-例如绿色藤蔓蛇上这种稳定的头部的流行展示。
比偏移分页好得多的是键集分页( 我们也对此进行了博客介绍 )。
- 阅读Markus的“ 我们需要工具支持分页设置 ”
8.乔什·伯库斯(Josh Berkus)“标记所有事物”
从性能的角度来看,在关系数据库中实现标记可能是野兽。 您应该规范化(一对多)吗? 您是否应该进行大量规范化(多对多)? 您应该使用嵌套的集合/数组/甚至是JSON数据结构吗?
Josh就PostgreSQL中的重标记性能编写了非常有趣的文章,表明规范化并非总是最佳选择。
- 阅读Josh的“ 标记所有事物 ”
9. Alek Bolenok的“ SQL Server中的十件事(无法按预期工作)”
这又是阿莱克(Quassnoi)的作品。 SQL Server内部发生的一系列非常有趣的事情,当您习惯使用其他数据库时可能不会想到。 无论是否使用SQL Server,这都是一本必读的书,目的是重新唤起人们对SQL实现之间细微差别的认识
- 阅读Alek的“ SQL Server中的10件事(无法按预期工作) ”
10. Aaron Bertrand:“最佳的总计方法”
运行总计是基于SQL的报告的非常典型的用例。 总计是每位使用Excel的项目经理都能直观地知道该怎么做的东西。 只需在整个电子表格中拖放该甜美可爱的公式即可完成:
如何在SQL中做同样的事情? 还有很多方法。 Aaron Bertrand总结了SQL Server 2012的各种解决方案。
- 阅读Aaron的“ 运行总计的最佳方法 ”
许多其他文章
当然,还有许多其他非常好的文章提供了对有用SQL技巧的深入了解。 如果发现遇到了可以很好地补充此列表的文章,请在评论部分保留链接和说明。 未来的读者将不胜感激。
翻译自: https://www.javacodegeeks.com/2015/02/10-sql-articles-everyone-must-read.html
sql 每个商品只取10条