什么是派生表
派生表是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-什么是派生表,派生表的用法