什么时候不适合使用派生表?

Cur*_*che 5 sql derived-table

此SO帖子详细介绍了Derived与临时表的性能优势.

除了性能之外,还存在哪些Derived表不适合的情况.

每个帖子的一个答案都是有用的.

Bil*_*win 1

我更愿意在临时表上而不是派生表上进行自联接。

CREATE TEMPORARY TABLE foo AS SELECT ...;

SELECT ... FROM foo f1 JOIN foo f2 ON ...conditions...;
Run Code Online (Sandbox Code Playgroud)

与使用派生表相比,您必须将整个查询编写两次:

SELECT ... 
FROM (SELECT ...)
JOIN (SELECT ...) ON ...conditions...;
Run Code Online (Sandbox Code Playgroud)

但另一种解决方案是使用与派生表略有不同的公共表表达式:

WITH foo AS (SELECT ...)
SELECT ... FROM foo f1 JOIN foo f2 ON ...conditions...;
Run Code Online (Sandbox Code Playgroud)

前提是您使用支持此语法的数据库品牌(Microsoft、Oracle、IBM、PostgreSQL)。