如果我们有一个VIEW_MYTABLE
包含 50 列的 SQL 视图。
选项 1:
with CTE_MYQUERY1 as (
select [VIEW_MYTABLE].*
from [VIEW_MYTABLE]
/*some complex where clause*/
)
选项 2:
with CTE_MYQUERY2 as (
select [COLUMN_1], [COLUMN_2], [COLUMN_3], ...., [COLUMN_10]
from [VIEW_MYTABLE]
/*some complex where clause*/
)
据我了解,定义列的选择总是比select *
语句快。请注意,在第二个查询中,我只选择了视图中 50 列中的 10 列。
我得到的结果都一样吗?谁能让我知道 CTE 在内部是如何工作的,它是否首先生成结果集,然后将其提供给后续查询(SELECT
在我的情况下为查询)?