我的问题是关于性能以及在运行时评估CTE的方式.
我计划通过定义基本投影来重用代码,然后使用不同的过滤器在此基本投影的顶部定义多个CTE.
这是否会导致任何性能问题.更具体地说,每次都会评估基本投影.
例如:
WITH CTE_PERSON as (
SELECT * FROM PersonTable
),
CTE_PERSON_WITH_AGE as (
SELECT * FROM CTE_PERSON WHERE age > 24
),
CTE_PERSON_WITH_AGE_AND_GENDER as (
SELECT * FROM CTE_PERSON_WITH_AGE WHERE gender = 'm'
),
CTE_PERSON_WITH_NAME as (
SELECT * FROM CTE_PERSON WHERE name = 'abc'
)
Run Code Online (Sandbox Code Playgroud)