小编典典

使用单个联接查询而不是多个查询来提高性能?

sql

假设我有一个数据库,其中包含带有标签的博客文章,并且我想检索带有标签的博客文章。

我可以做两个查询:

SELECT title, text, date 
  FROM POSTS 
 WHERE id = 1

SELECT tag 
  FROM TAGS 
 WHERE post_id = 1

但是,我也可以在单个查询中执行此操作:

SELECT title, text, date, tag 
  FROM POSTS, TAGS 
 WHERE posts.id = 1 
  AND tags.post_id = posts.id

后者有点浪费,因为它传输相同的标题,文本和日期列的次数是博客帖子具有的标签的次数,但是它可能会更快,因为只有一次到服务器的行程。

后一种查询是否有其他选择,可以避免传输重复数据?还是没什么大不了的,我还是应该使用它,因为传输几百个未使用的额外字节比进行两个单独的查询便宜吗?


阅读 182

收藏
2021-05-16

共1个答案

小编典典

MySQL优化并非如此简单。您会发现有时多个查询(可能在中间有一个临时表)比单个查询要快得多,尤其是在进行复杂的联接/聚合时。因此,不要以为单个查询总是会更快,因为它不会。

但是 ,单个查询的速度 通常
比多个查询快或快,它可以更简洁地表达您的工作。不必担心线路上的几个字节,与正在进行的其他所有操作相比,它们是微不足道的。

2021-05-16