上星期去上了个公开课,关于CTE(Common Table Expressions)。
CTE在MSSQL 2005的时候已经出现。当然,不是MSSQL的特有的,在Oracle里也有。
CTE是在SQL语句里定义一个临时的数据集,然后在跟着的SQL语句里面使用。
一下是一个简单的例子:
With test_cte As
(
Select * From abc
)
Select * From test_cte
例子里,With就是CTE的定义语句,test_cte就是那个临时的数据集。在定义后,在跟着的SQL语句里就能直接使用。
如上面的例子。其实就等价于:
Select * From abc
当然,这不是CTE出生的原因。这个只是一个简单的例子去说明而已。
CTE能把多次调用的子句简化,让SQL语句看起来容易理解点,但是对性能没有任何的提高。性能和原来的一样。