CTE表"/>
CTE表
common table expression 相信很多朋友都有过子查询的编写经历,我在以前工作中也经常会用到,子查询分两种,一种是嵌套子查询,一种是相关子查询。这两种查询的性能都不高,尤其是相关子查询的性能非常低,原因在于子查询所构造出来的“临时表”是以语句的形式出现的,每次执行查询的时候都要做一次查询的全过程(包括语法分析、解析、优化、执行,然后得到数据,再来执行外查询),性能自然很低。为了解决这个状况,在SQLSERVER2000时经常会将一些常用子查询所到的结果固定成一张表,这样不必反复生成查询计划,效果会高很多,但负面作用是提升了管理成本,现在有了CTE表就好了,两方面问题全都可以得到解决,不信各位可以自己试一下,效果显而易见。 语法在联机帮助上有,自己去查详细的吧,列举一个例子: USE AdventureWorks; GO WITH DirReps(ManagerID, DirectReports) AS (SELECT ManagerID, COUNT(*) FROM HumanResources.Employee AS eWHERE ManagerID IS NOT NULLGROUP BY ManagerID ) SELECT ManagerID, DirectReports FROM DirReps ORDER BY ManagerID; GO |
更多推荐
CTE表
发布评论