哪个更快?组合或多个查询?

时间:2017-12-23 20:56:46

标签: mysql sql pdo

1 million record 的表格中,效果中的这些查询之间是否有任何不同?

id IS PRIMARY

userid IS INDEXED

name IS UNIQUE

合并查询:

$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 个答案:

答案 0 :(得分:2)

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

停在那里。您认为哪个更快?大概多少钱?

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

运行这些简单查询的开销非常重要。如果您关心效果,则需要users(id, name)reports(userid)上的索引。由于运行查询的开销,第一个查询应该更快。