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

LEFT JOIN与多个SELECT语句

松雅昶
2023-03-14
问题内容

我正在研究别人的PHP代码,并且一遍又一遍地看到这种模式:

(伪代码)

result = SELECT blah1, blah2, foreign_key FROM foo WHERE key=bar

if foreign_key > 0  
  other_result = SELECT something FROM foo2 WHERE key=foreign_key  
end

如果其他表中没有相关行,则代码需要分支,但是通过在单个SELECT语句中执行LEFT
JOIN不能做到更好吗?我是否缺少一些性能优势?可移植性问题?还是我只是在挑剔?


问题答案:

没有足够的信息来真正回答问题。我曾在一些应用程序上工作过,这些应用程序出于一个原因减少查询数量而出于另一个原因增加查询数量
提高了性能。在同一个应用中!

对于表大小,数据库配置以及查询外部表的频率的某些组合,执行两个查询可能比LEFT JOIN快得多。 但是经验和测试是唯一可以告诉你的东西
。具有中等大小表的MySQL似乎对此很敏感,IME。在一个表上执行三个查询通常比一个查询联接三个查询要快得多。我已经看到了一个数量级的加速。



 类似资料:
  • 我有这样一个选择声明: 我的select语句按以下顺序显示列:col1、col2、col3、col4、col5、col6、col7。 我想以任何其他顺序显示列,例如:col7, col6, col1, col2, col3, col4, col5。 我怎样才能做到这一点而不改变我的语句和连接顺序?我需要一些东西,比如在一个

  • 本文向大家介绍MySQL Select语句DISTINCT对于多列?,包括了MySQL Select语句DISTINCT对于多列?的使用技巧和注意事项,需要的朋友参考一下 要了解多列的MySQL select语句DISTINCT,让我们看一个示例并创建一个表。创建表的查询如下 使用insert命令在表中插入一些记录。查询如下 使用select语句显示表中的所有记录。查询如下 以下是输出 这是对多列

  • 问题内容: 我有这些表和值: 我想使用表1中的值及其各自的ID更新表2中的所有值。 有没有办法通过简单的SQL查询来做到这一点? 问题答案: 运行选择以确保它是您想要的 更新 另外,请考虑使用,以便在需要时可以将其回滚,但请在满意时再进行确认。

  • 问题内容: 使用PHP / PDO / MySQL是否可以在对多个表进行选择并且返回的数组键完全合格以避免列名冲突时对列使用通配符? 例: SELECT * from table1,table2; 给出: 数组键是“ table1.id”,“ table2.id”,“ table1.name”等。 我尝试使用“ SELECT table1。,table2。 …”,但是返回的数组键不完全合格,因此具

  • 我有以下表格: http://www.gulllakeschools.net/mysqltables.pdf 我需要以以下格式提取数据:学生姓、学生名、日期事件、日期事件(学生登录的每一天都有一个日期事件) 组件com_users是我需要从组件列中提取的组件。 我是mysql的菜鸟,不知道如何一次完成。我有这些单独运行良好的精选语句: 但我不能为我的生活让他们加入。我尝试过加入,加入,完全加入,合

  • Go 语言条件语句 select是Go中的一个控制结构,类似于用于通信的switch语句。每个case必须是一个通信操作,要么是发送要么是接收。 select随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。一个默认的子句应该总是可运行的。 语法 Go 编程语言中 select 语句的语法如下: select { case communication