为什么使用 JOIN 子句而不是 WHERE 条件?

Why use a JOIN clause versus a WHERE condition?(为什么使用 JOIN 子句而不是 WHERE 条件?)
本文介绍了为什么使用 JOIN 子句而不是 WHERE 条件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我针对 Oracle 数据库进行开发.当我需要手动编写(而不是使用像 hibernate 这样的 ORM)时,我使用 WHERE 条件而不是 JOIN.

I develop against Oracle databases. When I need to manually write (not use an ORM like hibernate), I use a WHERE condition instead of a JOIN.

例如(这只是为了说明样式而简单化):

for example (this is simplistic just to illustrate the style):

Select *
from customers c, invoices i, shipment_info si
where c.customer_id = i.customer_id
    and i.amount > 999.99 
    and i.invoice_id = si.invoice_id(+)  -- added to show a replacement for a join
order by i.amount, c.name

我从一位老 Oracle DBA 那里学到了这种风格.我后来了解到这不是标准的 SQL 语法.除了非标准和数据库可移植性低得多之外,使用这种格式还有其他影响吗?

I learned this style from an OLD oracle DBA. I have since learned that this is not standard SQL syntax. Other than being non-standard and much less database portable, are there any other repercussions to using this format?

推荐答案

有些人会说这种风格可读性较差,但这是习惯问题.从性能的角度来看,这并不重要,因为查询优化器会负责.

Some people will say that this style is less readable, but that's a matter of habit. From a performance point of view, it doesn't matter, since the query optimizer takes care of that.

这篇关于为什么使用 JOIN 子句而不是 WHERE 条件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Execute complex raw SQL query in EF6(在EF6中执行复杂的原始SQL查询)
Hibernate reactive No Vert.x context active in aws rds(AWS RDS中的休眠反应性非Vert.x上下文处于活动状态)
Bulk insert with mysql2 and NodeJs throws 500(使用mysql2和NodeJS的大容量插入抛出500)
Flask + PyMySQL giving error no attribute #39;settimeout#39;(FlASK+PyMySQL给出错误,没有属性#39;setTimeout#39;)
auto_increment column for a group of rows?(一组行的AUTO_INCREMENT列?)
Sort by ID DESC(按ID代码排序)