哪个更快?组合查询还是多个查询?

Posted

技术标签:

【中文标题】哪个更快?组合查询还是多个查询?【英文标题】:Which is Faster? Combined or Multiple Queries? 【发布时间】:2017-12-23 20:56:45 【问题描述】:

这些查询在 1 million record 的表中的性能方面有什么不同吗?

idPRIMARY

useridINDEXED

nameUNIQUE

组合查询:

$Query = 'SELECT name, (SELECT EXISTS (SELECT id FROM reports WHERE userid = 1)) AS status 
FROM users 
WHERE id = 1 
LIMIT 1';

$stmt->prepare($Query);
$stmt->execute();
$row = $stmt->fetch();

$name = $row['name'];
$status = $row['status'];

多个查询:

1

$Query = 'SELECT name
FROM users 
WHERE id = 1 
LIMIT 1';

$stmt->prepare($Query);
$stmt->execute();
$row = $stmt->fetch();

$name = $row['name'];

2

$Query = 'SELECT EXISTS (SELECT id FROM reports WHERE userid = 1)';
$stmt->prepare($Query);
$stmt->execute();
$status = $stmt->fetchColumn();

【问题讨论】:

这与您 1 小时前提出的问题几乎相同:***.com/questions/47955316/… 但您对我的建议一无所知:使用EXPLAIN,自己衡量性能,至少显示SHOW CREATE TABLE 在您发布问题时用于您的表格。 【参考方案1】:

在第二个版本中,mysql 必须编译、解析和执行两个查询。首先,只需要编译、解析和执行一个查询。

停在那里。你觉得哪个更快?大约是多少?

与所有性能问题一样,您可以自己尝试一下,看看哪个更快。

运行此类简单查询的开销可能非常重要。如果您关心性能,您需要在users(id, name)reports(userid) 上建立索引。由于运行查询的开销,第一个查询应该会更快。

【讨论】:

在这种情况下,越少越好。 @Toleo 。 . .作为一般规则,让数据库做尽可能多的工作是个好主意。数据库经过优化以处理复杂的查询。 (也有例外,但这是一个很好的默认习惯。)

以上是关于哪个更快?组合查询还是多个查询?的主要内容,如果未能解决你的问题,请参考以下文章

SQL - 组合多个类似查询

报告的多个记录源

组合多个查询/查询优化

MySQL:在 1:N 关系中哪个更快?加入还是两个查询? [复制]

组合查询

组合查询