假设我有一个数据库,其中包含带有标签的博客文章,并且我想检索带有标签的博客文章。
我可以做两个查询:
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
后者有点浪费,因为它传输相同的标题,文本和日期列的次数是博客帖子具有的标签的次数,但是它可能会更快,因为只有一次到服务器的行程。
后一种查询是否有其他选择,可以避免传输重复数据?还是没什么大不了的,我还是应该使用它,因为传输几百个未使用的额外字节比进行两个单独的查询便宜吗?
MySQL优化并非如此简单。您会发现有时多个查询(可能在中间有一个临时表)比单个查询要快得多,尤其是在进行复杂的联接/聚合时。因此,不要以为单个查询总是会更快,因为它不会。
但是 ,单个查询的速度 通常 比多个查询快或快,它可以更简洁地表达您的工作。不必担心线路上的几个字节,与正在进行的其他所有操作相比,它们是微不足道的。