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

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

在我工作过的每一家公司,我都发现人们仍然在用ANSI-89标准编写SQL查询:

select a.id, b.id, b.address_1from person a, address bwhere a.id = b.id

而不是ANSI-92标准:

select a.id, b.id, b.address_1from person ainner join address bon a.id = b.id

对于这样一个非常简单的查询,可读性没有太大的差别,但是对于大型查询,我发现将我的联接条件分组并列出表会使我们更容易发现JOIN中可能出现的问题,让我们在WHERE子句中保留所有筛选。更不用说,我觉得外部联接比Oracle中的(+)语法直观得多。

当我试图向人们传教ANSI-92时,使用ANSI-92比ANSI-89有什么具体的性能效益吗?我会自己尝试,但是我们这里的Oracle设置不允许我们使用解释计划-不希望人们试图优化他们的代码,对吗?


料青山看我应如是
浏览 1035回答 3
3回答

慕桂英546537

我想到了几个理由:人们这样做是出于习惯人们比较懒惰,喜欢使用“旧风格”连接,因为它们只需要较少的输入。初学者常常在sql-92联接语法方面遇到问题。人们不会仅仅因为有新语法而改用新语法人们不知道新语法(如果您想称它为)所具有的好处,主要是它使您能够筛选表。以前你做一个外部连接,而不是在它之后,当你只有WHERE子句时。就我而言,我使用SQL-92语法进行所有的联接,并在可能的情况下转换代码。这是一种更干净、更易读、更强大的方法。但是很难说服某人使用这种新样式,因为他们认为这样做会在不改变查询结果的同时增加输入工作量。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL