当前位置: 首页 > 面试题库 >

为什么没有比ANSI-89更好地采用SQL ANSI-92标准?

葛季萌
2023-03-14
问题内容

在我工作的每家公司中,我发现人们仍在按照ANSI-89标准编写其SQL查询:

select a.id, b.id, b.address_1
from person a, address b
where a.id = b.id

而不是ANSI-92标准:

select a.id, b.id, b.address_1
from person a
inner join address b
on a.id = b.id

对于这样的极其简单的查询,可读性没有太大差异,但是对于大型查询,我发现将联接条件分组并列出表可以更轻松地查看联接中可能出现问题的位置,并且让我将所有过滤保留在WHERE子句中。更不用说我觉得外部联接比Oracle中的(+)语法直观得多。

当我尝试向人们传播ANSI-92时,使用ANSI-92而不是ANSI-89有什么具体的性能优势?我会自己尝试,但是我们在这里使用的Oracle设置不允许我们使用EXPLAIN
PLAN-不想让人们尝试优化他们的代码,是吗?


问题答案:

根据Peter Gulutzan和Trudy Pelzer撰写的“ SQL Performance
Tuning”,在他们测试的六个或八个RDBMS品牌中,SQL-89与SQL-92样式连接的优化或性能没有差异。可以假设大多数RDBMS引擎在优化或执行查询之前将语法转换为内部表示形式,因此人类可读的语法没有任何区别。

我还尝试传播SQL-92语法。它获得批准已经十六年了,现在该是人们开始使用它的时候了!而且所有品牌的SQL数据库现在都支持它,因此没有理由继续使用非标准的(+)Oracle语法或*=Microsoft
/ Sybase语法。

至于为什么很难打破SQL-89开发人员社区的习惯,我只能假设有大量的“金字塔底层”的程序员使用书本,杂志文章中的古老示例通过复制和粘贴进行编码,或其他代码库,这些人不会抽象地学习新语法。有些人模式匹配,有些人死记硬背。

不过,我逐渐发现人们使用SQL-92语法的频率比以前高。自1994年以来,我一直在在线回答SQL问题。



 类似资料:
  • 问题内容: 我试图理解 为什么Java的ArrayDeque比Java的LinkedList更好, 因为它们都实现了Deque接口。 我几乎看不到有人在他们的代码中使用ArrayDeque。如果有人对ArrayDeque的实现方式有了更多的了解,那将是有帮助的。 如果我理解它,我会更自信地使用它。对于JDK实现管理头和尾引用的方式,我不清楚。 问题答案: 链接结构可能是最糟糕的结构,要在每个元素上

  • 问题内容: 我目前正在开始新的应用开发。应用程序设计师坚持认为我们使用 JBoss5 是因为它“更好”。是否有人对“更好”有更广泛的定义(如果如此)? 我有在具有大量用户负载的大规模应用程序中使用 Tomcat5 和6的经验,并且它处理得很好(IMHO)。两者都将在相同的硬件条件下(如果实现很重要)在 RedHat6 上运行。 提前致谢 问题答案: 说任何工具或框架都只是“更好”是可笑的。它总是取

  • 问题内容: 一直有人告诉我,在调试应用程序时,JavaScript的方法优于简单的使用方法。为什么是这样?有没有一个很好的例子,有人可以指出我哪里是更好的选择? 问题答案: 正在阻止 在非调试环境中不容易被抑制 通常可以很好地格式化对象并允许遍历它们 日志记录语句通常具有交互式的代码指针,该代码发出了日志记录语句 您一次只能查看一个以上的消息 可以通过直观的格式设置不同的日志记录级别

  • 问题内容: 许多Java书籍都将该语句描述为比该语句快。但是我没有找到任何地方为什么切换比if更快。 例 我有一种情况,我必须选择两项中的任何一项。我可以使用 要么 考虑item和BREAD是一个恒定的int值。 在上面的示例中,哪个操作更快,为什么? 问题答案: 因为有很多情况下,有一些特殊的字节码可以有效地评估switch语句。 如果使用IF语句实现,则将进行检查,跳转到下一个子句,进行检查,

  • > 我看到接口只允许实现方法。那么为什么我们甚至需要这个接口呢?为什么我们不能简单地在我们想要的任何类中定义和声明该方法,而无需实现接口? 我知道这是正确的:

  • 问题内容: 最近有人要求我为一堂课学习一些MATLAB基础知识。 是什么让它对研究人员和大学工作人员来说如此酷?我发现处理矩阵和绘制事物很酷……(可以使用某些库在Python中轻松完成的事情)。 编写函数或解析文件很痛苦。我仍处于起步阶段,我想念什么? 在“现实”世界中,我应该考虑将其用于什么?什么时候可以比Python做得更好?为了更好,我的意思是:写表演的简便方法。 更新1: 我最想知道的一件