这些查询返回相同的结果,这是更好的性能吗?
SELECT
books.id,
books.title,
(SELECT COUNT(*) FROM subscriptions WHERE books.id = subscriptions.book_id) AS subscription_count,
(SELECT COUNT(*) FROM books) AS book_count
FROM books
ORDER BY id;
SELECT
*
FROM
(SELECT
books.id,
books.title,
(SELECT COUNT(*) FROM subscriptions WHERE books.id = subscriptions.book_id) AS subscription_count,
(SELECT COUNT(*) FROM books) AS book_count
FROM books) AS tmp
ORDER BY id;
在这种情况下,我应该从其他sql获得book_count
吗?
答案 0 :(得分:0)
您正在使用的是一个派生表,对于现代DBMS,没有任何性能差异。所以
select *
from some_table
order by some_column;
与完全的性能相同:
select *
from (
select *
from some_table
) t
order by some_column;