什么是派生表

派生表是Microsoft公司新推出的SQL2005数据库的一个增强功能。它将子查询做为一个表来处理,这个由子查询得出的新表就是我们说的“派生表”。

派生表:比如要查找一个叫张铁牛的人的信息,我们知道他是男性,为了缩小查找范围我把所有的男性都找出来,然后从这些男性中里面再去找张铁牛。这里男性的集合就相当于派生表,转成sql语句是这样:

select 姓名,住址,身份证 from (select * from 表名 where 性别='男性') t where 姓名='张铁牛'

,这里的t这个数据集就是派生表,它是虚表,在数据库中不存在的,是我们构建的,在这里的目的是为了缩小数据的查找范围。

派生表的用法

派生表本身性能上并没有什么优点,要看怎么用,就能提高整个查询的性能。比如要查询学生的姓名以及他们每一门分数之和。

下面这种查询方法效率很低。每一条学生数据都会去查询一次tb_score表。

SELECT Name,

             (select sum(score) from tb_score where tb_student.id=tb_score.studentid) As SumScore

             from tb_student

而下面这种方式,使用学生表关联“学生的分数之和派生表",从而避免了每一条数据都要去执行一次查询。

SELECT Name,

              tb_scoresum.ScoreSum

from tb_student

inner join (select studentid,sum(score) as ScoreSum

                   from tb_score

                   group by studentid) tb_scoresum on tb_student.id=tb_scoresum.studentid

 

我的总结:

派生表用起来很灵活,它的主要作用就是便捷的构建各种需要的临时数据集。

 

转载请注明出处: http://bluesd7.com/蓝影闪电的随笔/ContentId/31/SQL-什么是派生表,派生表的用法

 
标签: SQL Server, SQL 分类: SQL Server, 原创

评论数量 (1)

留下一个评论

剩余2000个字符。 一共限制在2000个字符内.
发送评论

搜索

关于我

姓名:余钊

英文名:Joshua

现居:武汉

Email: yuzhao_blue@163.com

关注:架构, 全栈, SQL, 高性能, 高并发

日历