2选择或1加入查询?

xRo*_*bot 8 mysql sql database join query-optimization

我有2张桌子:

书(身份证,头衔,年龄)----> 100亿行

作者(id,book_id,name,born)----> 1000万行

现在,假设我有一本书的通用ID.我需要打印这个页面:

Title: mybook

authors: Tom, Graham, Luis, Clarke, George
Run Code Online (Sandbox Code Playgroud)

那么......最好的方法是什么?

1)这样的简单连接:

Select book.title, author.name 
From book, author 
WHERE ( author.book_id = book.id ) AND ( book.id = 342 )
Run Code Online (Sandbox Code Playgroud)

2)为了避免加入,我可以做2个简单的查询:

Select title FROM book WHERE id = 342

Select name FROM author WHERE book_id = 342 
Run Code Online (Sandbox Code Playgroud)

什么是最有效的方式?

cle*_*tus 8

第一个.这只是一次往返.它需要一些处理来将作者行折叠成一个逗号分隔的列表,就像你想要的那样,但这基本上是样板代码.

单独的相关查询是一个坏习惯,会比大多数事情更快地杀死你的表现.