栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在MySQL查询中,为什么要使用join而不是在哪里?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在MySQL查询中,为什么要使用join而不是在哪里?

任何涉及多个表的查询都需要某种形式的关联,以将结果从表“ A”链接到表“ B”。传统的(ANSI-89)方法是:

  1. 在FROM子句中列出逗号分隔列表中涉及的表
  2. 在WHERe子句中编写表之间的关联
    SELECt *

    FROM TABLE_A a,
    TABLE_B b
    WHERe a.id = b.id

这是使用ANSI-92 JOIN语法重写的查询:

SELECt *  FROM TABLE_A a  JOIN TABLE_B b ON b.id = a.id

从性能角度来看:


在受支持的地方(Oracle 9i +,PostgreSQL 7.2 +,MySQL 3.23 +,SQL Server
2000+),使用两种语法都不会对性能产生任何好处。优化器将它们视为相同的查询。但是更复杂的查询可以从使用ANSI-92语法中受益:

  • 控制JOIN顺序的能力-扫描表的顺序
  • 能够在加入表格之前在表格上应用过滤条件

从维护角度:


在ANSI-89上使用ANSI-92 JOIN语法的原因有很多:

  • 更具可读性,因为JOIN标准与WHERe子句分开
  • 不太可能错过JOIN标准
  • 对除INNER之外的JOIN类型的一致语法支持,使查询易于在其他数据库上使用
  • WHERe子句仅用作连接表的笛卡尔积的过滤

从设计角度来看:


ANSI-92 JOIN语法是模式,而不是反模式:

  • 查询的目的更加明显;应用程序使用的列很清楚
  • 它遵循关于尽可能使用严​​格类型的模块化规则。显式普遍更好。

结论


缺乏熟悉度和/或舒适度,我认为继续使用ANSI-89 WHERe子句代替ANSI-92
JOIN语法没有任何好处。有人可能会抱怨ANSI-92语法更冗长,但这就是它的明确之处。越明确,就越容易理解和维护。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/387928.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号