繁体   English   中英

使用SQL Server 2008 R2中的临时表优化表的性能

[英]optimizing a table's performance using temporary table in sql server 2008 r2

美好的一天,我在优化数据库查询方面是个新手……实际上,这是我的第一次。我已经完成了研究,发现使用临时表可以帮助我提高查询性能。像使用索引这样的解决方案,但是尽管他们有很多关于它的博客,但我还没有找到关于它的详细教程...我希望可以为您提供帮助。 给定这个样本表...

表模式::

    StudentInfo:
    StudentID 
    LAstname
    FirstName
    YearCode
    SectionCode

    TeacherInfo:
    SectionCode
    TeacherID
    TeacherName


    GradeInfo:
    StudentID
    AverageGrade

    CashierRecord:
    StudentID
    EnrolledDate
    ModeOfPayment
    AmountDue

查询我尝试过...

 Select 
        s.StudentID,
        s.FirstName,
        s.LastName,
        t.Teacher,
        g.AverageGrade,
        c.EnrolledDate
    From StudentInfo s
    LEFT JOIN TeacherInfo t ON s.StudentID= t.StudentID
    LEFT JOIN GradeInfo g ON s.StudentID= g.StudentID
    LEFT JOIN GradeRecords c ON s.StudentID= c.StudentID

如果给定的查询将检索大量数据(例如100,000条记录),则该查询肯定会运行性能低下...请您解释一下我如何利用TEMPORARY TABLES存储来自多个表的数据,以便进行检索更轻松...

要根据SQL Server中的选择结果创建表,可以使用select into

Select 
    s.StudentID,
    s.FirstName,
    s.LastName,
    t.Teacher,
    g.AverageGrade,
    c.EnrolledDate
into TEMPTABLE
From StudentInfo s
LEFT JOIN TeacherInfo t ON s.StudentID= t.StudentID
LEFT JOIN GradeInfo g ON s.StudentID= g.StudentID
LEFT JOIN GradeRecords c ON s.StudentID= c.StudentID

然后,您可以使用TEMPTABLE ,然后使用

drop table TEMPTABLE

这样,您已将数据收集到一张表中。 TEMPTABLE尚不是真正的临时表。 可以在这里找到更多信息( 是否需要使用#在SQL Server中创建临时表? )。 归结为编写#TEMPTABLE

但是要构建此表,您仍然可以选择处理时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM