zoukankan      html  css  js  c++  java
  • 大数据量的查询

    1.用临时表

    2.用存储过程

    3.建索引

    -- =============================================
    -- Author:        Ylem
    -- Create date: 2009-12-23
    -- Description:    得到导入简历列表
    -- =============================================
    alter PROCEDURE [dbo].[proc_GetImportResumeBaseByconditions2]
    (
        @ConditionSql  varchar(3000),
        @Size int,
        @index varchar(10),
        @count int output
    )
    AS    
    BEGIN
        --SET NOCOUNT ON;
        
        DECLARE @sql nvarchar(4000)
        
        CREATE TABLE #ResumeBase (
            ResumeID uniqueidentifier PRIMARY KEY
            ,JobSeekerID uniqueidentifier
            ,ResumeCode varchar(64)
            ,ResumeSourceSite varchar(20)
            ,ResumeSourceID varchar(64)
            ,UpdateDate datetime
            ,CreateDate datetime
            ,AuditStatue Smallint)
            
        CREATE TABLE #BuyResume(ResumeID uniqueidentifier PRIMARY KEY, Quantity int)
        INSERT INTO #BuyResume(ResumeID, Quantity)
        SELECT ResumeID, COUNT(*) Quantity
        FROM BuyNoContactResume
        GROUP BY ResumeID    
        
        INSERT INTO #ResumeBase
        EXEC (@ConditionSql)
        
        CREATE INDEX IX_ResumeBaseTemp_JobSeekerID ON #ResumeBase(JobSeekerID ASC);        
                    
        CREATE TABLE #TempRecord (IndexID int /*IDENTITY (1, 1) NOT NULL primary key*/,
            ResumeID uniqueidentifier
            ,ResumeCode varchar(64)
            ,ResumeSourceSite varchar(20)
            ,ResumeSourceID varchar(64)
            ,UpdateDate datetime
            ,CreateDate datetime
            ,CityID varchar(20)
            ,ContactState tinyint
            ,Sex bit
            ,Age int
            ,Degree int
            ,LastLoginDate datetime
            ,AuditStatue smallint)
        
            SET @sql = '
            SELECT IndexID = ROW_NUMBER() OVER(ORDER BY CreateDate), t.*
            FROM (
                    SELECT
                        rb.ResumeID
                        ,rb.ResumeCode
                        ,rb.ResumeSourceSite
                        ,rb.ResumeSourceID
                        ,rb.UpdateDate
                        ,rb.CreateDate
                        ,i.CityID
                        ,i.ContactState
                        ,i.Sex
                        ,datediff(yy,i.Birthday,getdate()) Age
                        ,i.Degree
                        ,u.LastLoginDate
                        ,rb.AuditStatue
                    FROM
                        #ResumeBase rb
                        JOIN JobSeekerInfo i ON i.JobSeekerID = rb.JobSeekerID
                        join jobseekeruser u on u.JobSeekerID = rb.JobSeekerID
                    WHERE i.ContactState =0
                ) t'

        
        INSERT INTO #TempRecord
        EXEC (@sql)
        --返回统计数
        SELECT @count = max(IndexID) from #TempRecord    

        --返回数据
        SELECT * FROM #TempRecord tmp
        WHERE IndexID > (@index*@Size) and IndexID<=((@index + 1) * @Size)
        DROP TABLE #TempRecord
    END 

  • 相关阅读:
    [再寄小读者之数学篇](2014-10-27 无穷多个无穷小量相乘还是无穷小量么?)
    华中师范大学2012年数学分析考研试题参考解答
    本科时的课程与成绩
    2014 年第六届全国大学生数学竞赛预赛数学类试题参考答案
    [家里蹲大学数学杂志]第322期赣南师范学院数学竞赛培训第11套模拟试卷
    [再寄小读者之数学篇](2014-10-18 利用 Lagrange 中值定理求极限)
    和马有关的成语
    PL/pgSQL学习笔记之一
    PostgreSQL的 initdb 源代码分析之二十五
    PostgreSQL的 initdb 源代码分析之二十四
  • 原文地址:https://www.cnblogs.com/ylemzhang/p/1667767.html
Copyright © 2011-2022 走看看