MYSQL一对一关系连接比个人更好[重复]

Posted

技术标签:

【中文标题】MYSQL一对一关系连接比个人更好[重复]【英文标题】:MYSQL one to one relation join better than individual [duplicate] 【发布时间】:2018-08-31 21:18:54 【问题描述】:

为了提高效率,如果发生一对一关系,哪个更好,请记住这一点,在非索引字段中发生,即单个查询,即

select email from users where name="John";

然后这样做

select * from jobs where email="first one";

或者这个单一的查询更好:

select j.* from jobs j inner join users u on u.id=j.id where j.email="email";

【问题讨论】:

first one 应该代表什么?查询的效率取决于很多事情。这真的取决于。 @TimBiegeleisen,我认为他的意思是第一个查询的结果。问题需要修改! @TimBiegeleisen,“then”和“than”经常被混淆,但他的意思确实是“then”。比较是在做前两个,或者只是第三个。 (我倾向于单查询,除非两者之间存在其他逻辑问题。) @MarcL。我现在感觉很糟糕,因为我完全错过了。 我看不出这是个问题。 【参考方案1】:

我将从正在访问您的 mysql 数据库(可能是 php)的应用程序的角度来回答。在这种情况下,您的第二个查询要好得多,因为您可以在单个查询中获得所需的数据,在单个网络调用中。另一方面,执行两个单独的查询需要对数据库进行两次完整的往返。这似乎是一个亮点,但请记住,如果您有很多用户并且您在整个应用程序中使用这种 MySQL 礼仪,这可能会降低性能。

至于连接查询的速度,是的,它可能会比两个单个查询中的任何一个都慢,但是如果您调整连接查询,您可能会使其适合您。与稍长的查询相比,两次往返可能对性能的影响更大。

【讨论】:

以上是关于MYSQL一对一关系连接比个人更好[重复]的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 基础 -- 多表关系(一对一1对多(多对一)多对多)多表查询(内连接外连接自连接子查询(嵌套查询)联合查询 union)笛卡儿积

Ms Access SQL:连接用逗号分隔的一对多关系[重复]

MySQL 多表-事务

mysql数据库表之间关系,一对一一对多多对多,多表查询

mysql中一对一,一对多,多对多关系

MySQL—— 数据库设计