SQL JOIN 方法:USING、ON 和 WHERE 的性能和语法差异
SQL 提供多种连接表的选项:USING、ON 和 WHERE。虽然这些选项的功能相似,但对它们的性能和语法含义的误解可能会出现。本文探讨了这些连接方法之间的差异。
性能方面
与普遍看法相反,这三种连接方法之间没有明显的性能差异。所有三种方法都会生成相同的优化查询计划。
语法和语义
ANSI 语法:
- JOIN(在 ANSI-92 中引入) 是执行连接的推荐语法。它使用 ON 子句明确定义连接条件。
- WHERE(ANSI-89) 允许使用 WHERE 子句来指定连接条件,但由于潜在的可读性和歧义问题,它已被弃用。
USING 语法:
- USING(在 SQL:2003 中引入) 是一种简写语法,它使用 USING 关键字来指定连接表之间的公共列。它提供了简洁直观的语法。
“join the where”(隐式 INNER JOIN)的歧义性
使用 WHERE 子句指定连接条件可能会导致歧义,尤其是在外部连接类型中。这个问题源于 SQL Server 中的逻辑查询处理顺序,其中 FROM 在 WHERE 之前进行评估。“join the where”可能会无意中创建笛卡尔积或产生意外结果。
语法歧义:
以下两个查询说明了在 WHERE 子句中混合隐式内部连接与 FROM 子句中显式外部连接时可能出现的语法歧义:
FROM T1, T2, T3 WHERE T1.ID = T2.ID AND T1.foo = 'bar' AND T2.fish = 42 FROM T1 INNER JOIN T2 ON T1.ID = T2.ID INNER JOIN T3 ON T1.ID = T3.ID WHERE T1.foo = 'bar' AND T2.fish = 42
歧义源于无法清楚地确定哪些连接是外部连接,哪些是内部连接。
建议:
为了清晰、一致性和与现代 SQL 标准的兼容性,建议:
- 对所有连接使用显式连接(带 ON 子句的 JOIN 语法)。
- 避免使用“join the where”(WHERE 子句中的隐式 INNER JOIN)。
- 使用 ANSI-92 语法(带 ON 子句的 JOIN)以实现跨平台兼容性。
以上是SQL 连接:USING、ON 和 WHERE 之间的性能和语法差异是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

本文讨论了使用MySQL的Alter Table语句修改表,包括添加/删除列,重命名表/列以及更改列数据类型。

文章讨论了为MySQL配置SSL/TLS加密,包括证书生成和验证。主要问题是使用自签名证书的安全含义。[角色计数:159]

文章讨论了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比较了它们对初学者和高级用户的功能和适合性。[159个字符]

本文讨论了使用Drop Table语句在MySQL中放下表,并强调了预防措施和风险。它强调,没有备份,该动作是不可逆转的,详细介绍了恢复方法和潜在的生产环境危害。

本文讨论了在PostgreSQL,MySQL和MongoDB等各个数据库中的JSON列上创建索引,以增强查询性能。它解释了索引特定的JSON路径的语法和好处,并列出了支持的数据库系统。

文章讨论了使用准备好的语句,输入验证和强密码策略确保针对SQL注入和蛮力攻击的MySQL。(159个字符)


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3汉化版
中文版,非常好用

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能