34,576
社区成员
发帖
与我相关
我的任务
分享
--自然数表1-1M
if object_id('Nums') is not null
drop table Nums
go
CREATE TABLE Nums(n int NOT NULL)
go
insert into Nums
select 1
union all select 2
--select a.n from Nums a
select * from
(select n=1 from Nums a cross join Nums b) c
cross join
(select n=1 from Nums a cross join Nums b) d
/*
n n
----------- -----------
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
(12 行受影响)
*/
select count(*),count(1) from
(select n=1 from Nums a cross join Nums b) c
cross join
(select n=1 from Nums a cross join Nums b) d
/*
----------- -----------
16 16
(1 行受影响)
*/
啊
;with a as (
select 1 a
union all select 2
),
b as (
select 1 a
union all select 2
)
select * from
(select n=1 from a cross join b) c
join --非cross
(select n=1 from a cross join b) d on 1=1
--result:
n n
----------- -----------
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
(16 行受影响)
--幻像
;with a as (
select 1 a
union all select 2
),
b as (
select 1 a
union all select 2
)
select * from a cross join b
--result:
a a
----------- -----------
1 1
1 2
2 1
2 2
(4 行受影响)
StmtText StmtId NodeId Parent PhysicalOp LogicalOp Argument DefinedValues EstimateRows EstimateIO EstimateCPU AvgRowSize TotalSubtreeCost OutputList Warnings Type Parallel EstimateExecutions
------------------------------------------------------------------------------------------------------------------------- ----------- ----------- ----------- ------------------------------ ------------------------------ ------------------------------------------ ------------------------------- ------------- ------------- ------------- ----------- ---------------- ----------------------- ------------------ ---------------------------------------------------------------- -------- ------------------
select * from
(select n=1 from Nums a cross join Nums b) c
cross join
(select n=1 from Nums a cross join Nums b) d 1 1 0 NULL NULL 1 NULL 12 NULL NULL NULL 0.01324375 NULL NULL SELECT 0 NULL
|--Compute Scalar(DEFINE:([Expr1006]=(1), [Expr1013]=(1))) 1 2 1 Compute Scalar Compute Scalar DEFINE:([Expr1006]=(1), [Expr1013]=(1)) [Expr1006]=(1), [Expr1013]=(1) 12 0 1.6E-06 15 0.01324375 [Expr1006], [Expr1013] NULL PLAN_ROW 0 1
|--Nested Loops(Inner Join) 1 3 2 Nested Loops Inner Join NULL NULL 12 0 6.688E-05 9 0.01324255 NULL NO JOIN PREDICATE PLAN_ROW 0 1
|--Nested Loops(Inner Join) 1 4 3 Nested Loops Inner Join NULL NULL 6 0 3.344E-05 9 0.00989616 NULL NO JOIN PREDICATE PLAN_ROW 0 1
| |--Nested Loops(Inner Join) 1 5 4 Nested Loops Inner Join NULL NULL 3 0 1.672E-05 9 0.006581673 NULL NO JOIN PREDICATE PLAN_ROW 0 1
| | |--Table Scan(OBJECT:([Micropoint].[dbo].[Nums] AS [a])) 1 6 5 Table Scan Table Scan OBJECT:([Micropoint].[dbo].[Nums] AS [a]) NULL 1.5 0.003125 0.0001592 9 0.00328365 NULL NULL PLAN_ROW 0 1
| | |--Table Scan(OBJECT:([Micropoint].[dbo].[Nums] AS [a])) 1 7 5 Table Scan Table Scan OBJECT:([Micropoint].[dbo].[Nums] AS [a]) NULL 2 0.0032035 8.07E-05 9 0.00328585 NULL NULL PLAN_ROW 0 1.75
| |--Table Scan(OBJECT:([Micropoint].[dbo].[Nums] AS [b])) 1 8 4 Table Scan Table Scan OBJECT:([Micropoint].[dbo].[Nums] AS [b]) NULL 2 0.0032035 8.07E-05 9 0.00328915 NULL NULL PLAN_ROW 0 3.25
|--Table Scan(OBJECT:([Micropoint].[dbo].[Nums] AS [b])) 1 9 3 Table Scan Table Scan OBJECT:([Micropoint].[dbo].[Nums] AS [b]) NULL 2 0.0032035 8.07E-05 9 0.00329575 NULL NULL PLAN_ROW 0 6.25
(9 行受影响)
set showplan_all on
select * from
(select n=1 from Nums a cross join Nums b) c
cross join
(select n=1 from Nums a cross join Nums b) d
StmtText StmtId NodeId Parent PhysicalOp LogicalOp Argument DefinedValues EstimateRows EstimateIO EstimateCPU AvgRowSize TotalSubtreeCost OutputList Warnings Type Parallel EstimateExecutions
------------------------------------------------------------------------------------------------------------------------- ----------- ----------- ----------- ------------------------------ ------------------------------ ---------------------------------------- ------------------------------- ------------- ------------- ------------- ----------- ---------------- ----------------------- ------------------ ---------------------------------------------------------------- -------- ------------------
select * from
(select n=1 from Nums a cross join Nums b) c
cross join
(select n=1 from Nums a cross join Nums b) d 1 1 0 NULL NULL 1 NULL 16 NULL NULL NULL 0.01327964 NULL NULL SELECT 0 NULL
|--Compute Scalar(DEFINE:([Expr1006]=(1), [Expr1013]=(1))) 1 2 1 Compute Scalar Compute Scalar DEFINE:([Expr1006]=(1), [Expr1013]=(1)) [Expr1006]=(1), [Expr1013]=(1) 16 0 1.6E-06 15 0.01327964 [Expr1006], [Expr1013] NULL PLAN_ROW 0 1
|--Nested Loops(Inner Join) 1 3 2 Nested Loops Inner Join NULL NULL 16 0 6.688E-05 9 0.01327804 NULL NO JOIN PREDICATE PLAN_ROW 0 1
|--Nested Loops(Inner Join) 1 4 3 Nested Loops Inner Join NULL NULL 8 0 3.344E-05 9 0.00991156 NULL NO JOIN PREDICATE PLAN_ROW 0 1
| |--Nested Loops(Inner Join) 1 5 4 Nested Loops Inner Join NULL NULL 4 0 1.672E-05 9 0.00658732 NULL NO JOIN PREDICATE PLAN_ROW 0 1
| | |--Table Scan(OBJECT:([master].[dbo].[Nums] AS [a])) 1 6 5 Table Scan Table Scan OBJECT:([master].[dbo].[Nums] AS [a]) NULL 2 0.003125 0.0001592 9 0.0032842 NULL NULL PLAN_ROW 0 1
| | |--Table Scan(OBJECT:([master].[dbo].[Nums] AS [a])) 1 7 5 Table Scan Table Scan OBJECT:([master].[dbo].[Nums] AS [a]) NULL 2 0.0032035 8.07E-05 9 0.0032864 NULL NULL PLAN_ROW 0 2
| |--Table Scan(OBJECT:([master].[dbo].[Nums] AS [b])) 1 8 4 Table Scan Table Scan OBJECT:([master].[dbo].[Nums] AS [b]) NULL 2 0.0032035 8.07E-05 9 0.0032908 NULL NULL PLAN_ROW 0 4
|--Table Scan(OBJECT:([master].[dbo].[Nums] AS [b])) 1 9 3 Table Scan Table Scan OBJECT:([master].[dbo].[Nums] AS [b]) NULL 2 0.0032035 8.07E-05 9 0.0032996 NULL NULL PLAN_ROW 0 8
(9 行受影响)
if object_id('Nums') is not null
drop table Nums
go
CREATE TABLE Nums(n int NOT NULL)
go
insert into Nums
select 1
union all select 2
--select a.n from Nums a
select * from
(select n=1 from Nums a cross join Nums b) c
cross join
(select n=1 from Nums a cross join Nums b) d
/*
n n
----------- -----------
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
(16 行受影响)
*/
if object_id('Nums') is not null
drop table Nums
go
CREATE TABLE Nums(n int NOT NULL)
go
insert into Nums
select 1
union all select 2
--select a.n from Nums a
select * from
(select n=1 from Nums a cross join Nums b) c
cross join
(select n=1 from Nums a cross join Nums b) d
(2 行受影响)
n n
----------- -----------
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
(16 行受影响)